Welcher Sortieralgorithmus ist unter welchen Umständen der schnellste?

Nabend.

Da ich mich ja mit der Programmierung beschäftige, habe ich versucht, einige Sortieralgorithmen in C++ nachzuprogrammieren (und mir danach die schnelleren Versionen aus dem Netz raus zu suchen). Dann wollte ich anhand einer Liste von 500.000 Elementen testen, welcher Algorithmus der Schnellste ist.

Getestet habe ich bisher std::sort, Quick Sort, Insertion Sort und Timsort. std::sort war bei der unsortierten Liste zwei Millisekunden schneller als Timsort, danach folgte Insertion Sort und Quick Sort war letzter. Wenn ich aber ein neues Element zu der sortierten Liste hinzugefügt habe, war Timsort der schnellste Algorithmus mit sage und schreibe 0 Mikrosekunden. Danach folgten Insertion Sort, std::sort und zu guter letzt war mal wieder Quick Sort fertig.

Wenn ich das ganze kurz zusammenfassen sollte, würde ich sagen, dass Timsort an dieser Stelle der beste Sortieralgorithmus ist, auch wenn er zwei Millisekunden langsamer bei der Sortierung einer komplett unsortierten Liste als std::sort ist. Zwei Millisekunden sind vernachlässigbar, vor allem, wenn std::sort bei der Sortierung der bereits sortierten Liste mit einem neuen Element 9 Millisekunden braucht, während Timsort nicht mal eine Mikrosekunde benötigt.

Gibt es Sortieralgorithmen, die noch schneller sind als die vier vorhin genannten? Oder welche anderen Szenarien könnte ich testen?

Gruß

Computer, programmieren, Sortierung, Algorithmus
json Daten in JavaScript auslesen und an html Elemente weiterleiten?

Hi,

mehr schlecht als recht arbeite ich mich gerade durch json und habe tatsächlich mittlerweile herausfunden, dass man zum Laden einer json-Datei ohne jQuery folgenden Ansatz zu brauchen scheint:

function loadJSON(callback) {var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json"); xobj.open('GET', 'data.json', true); // Replace 'my_data' with the path to your file xobj.onreadystatechange = function () { if (xobj.readyState == 4 && xobj.status == "200") { // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode callback(xobj.responseText); } }; xobj.send(null);

}

Wie ich damit dann allerdings Objekte und values auslese und weiterleite, ist mir schleierhaft.

Hier ist erst einmal der json Code

{"employees":
    [
        {
            "firstName": "John", 
            "lastName": "Doe"
        },
        {
            "firstName":"Anna", 
            "lastName":"Smith"
        },
        {
            "firstName":"Peter", 
            "lastName":"Jones"
        }
    ]
}

Meine Idee war ja etwas wie document.getElementbyID oder halt byClassName, um den Content im DOM zu verteilen. Aber irgendwas scheint mir zu fehlen.

Pseudocode mäßig wäre halt sowas schön: getElementbyID('title').data(firstName[0]) Irgendwie so halt ...

Was ich bisher gefunden habe, waren nur Kurzeinleitungen, wie ich den Code in der Konsole ausspucke, js Arrays erstelle (warum auch immer die Leute das in einem json Tutorial als Lösung anbieten) oder html Elemente in JavaScript mit dem json Inhalt erstelle. Wie gesagt, würde ich jedoch gerne den json Inhalt an meine bereits existierenden html Elemente weitergeben.

ps. Wenn ihr dazu eine jade-Lösung habt, wäre das natürlich noch um so prickelnder.

HTML, programmieren, JavaScript, AJAX, PHP, JSON
C# Focus bei UserControl?

Hallo,

ich hab ein Problem mit dem Focus eines UserControls. Und zwar bekommt das UserControl trotzdem den Focus obwohl alle seine ChildControls nicht focusierbar sind. Ich hab hier mal ein kleines Beispiel erstellt, zum testen einfach ein neues Windows Forms Project anlegen und den Code in den Source Code der Form kopieren.

using System.Windows.Forms;

namespace testUserControl
{
  using System.Diagnostics.Eventing.Reader;

  public partial class Form1 : Form
  {
    private testControl testControl1;
    private testControl testControl2;
    private testControl testControl3;
    
    public Form1()
    {
      InitializeComponent();

      this.testControl1 = new testUserControl.testControl();
      this.testControl2 = new testUserControl.testControl();
      this.testControl3 = new testUserControl.testControl();

      this.testControl1.Location = new System.Drawing.Point(24, 27);
      this.testControl1.Name = "testControl1";
      this.testControl1.Size = new System.Drawing.Size(150, 37);
      this.testControl1.TabIndex = 0;


      this.testControl2.Location = new System.Drawing.Point(24, 71);
      this.testControl2.Name = "testControl2";
      this.testControl2.Size = new System.Drawing.Size(150, 45);
      this.testControl2.TabIndex = 1;


      this.testControl3.Location = new System.Drawing.Point(24, 136);
      this.testControl3.Name = "testControl3";
      this.testControl3.Size = new System.Drawing.Size(150, 47);
      this.testControl3.TabIndex = 2;

      this.Controls.Add(this.testControl3);
      this.Controls.Add(this.testControl2);
      this.Controls.Add(this.testControl1);

      testControl2.Disable();
    }
  }

  public class testControl : UserControl
  {
    private TextBox test;

    private Label TestLabel;

    public testControl()
    {
      this.test = new TextBox();
      this.test.Name = "TextBox";
      this.test.Location = new System.Drawing.Point(100, 5);
      this.test.Size = new System.Drawing.Size(80, 17);

      this.TestLabel = new Label();
      this.TestLabel.Name = "Label";
      this.TestLabel.Text = "Test";
      this.TestLabel.Location = new System.Drawing.Point(10, 5);
      this.TestLabel.Size = new System.Drawing.Size(50, 17);

      this.Controls.Add(this.test);
      this.Controls.Add(this.TestLabel);
    }

    public void Disable()
    {
      this.test.Enabled = false;
    }
  }
}

Ich weiß das das Design jetzt nicht schön aussieht aber das ist auch egal. Um was es mir jetzt geht ist, das wenn ich mit tab durchgehe das 2. Control trotzdem den Focus bekommt obwohl es aus einem lable und einer deaktivierten TextBox besteht. Warum ist das so? Und wie kann ich das umgehen?

Danke für alle Antworten.

Computer, programmieren, C Sharp, Forms
Java Command "show" ist durchgestrichen(Bild)?

Ich glaube, dass durchgestrichene Commands erneuert werden oder so, stimmt das? Wenn das stimmt, was ist dann der neue Command? Oder warum funktioniert das sonst nicht? Für alle die es haben wollen den Code:

package cardlayout.tutorial;

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ItemEvent; import java.awt.event.ItemListener;

import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel;

public class CardLayout extends JFrame {

public static void main(String[] args) {
    new CardLayout();

}

private static final long serialVersionUID = 420622292333313289L;

private Toolkit t;
private int x, y, width = 800, height = 600;

//Komponenten
private JPanel mainContainer;
private JComboBox comboBox;

public CardLayout(){
    t = Toolkit.getDefaultToolkit();
    Dimension d = t.getScreenSize();
    x = (int) ((d.getWidth() - width) / 2);
    y = (int) ((d.getHeight() - height) / 2);

    setTitle("Gui Tutorial");
    setBounds(x, y, 800, 600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    this.initialisierung();
    this.initListener();


    setVisible(true);
}


private void initialisierung(){
    this.getContentPane().setLayout(new BorderLayout());

    this.mainContainer = new JPanel(new java.awt.CardLayout());
    this.comboBox = new JComboBox(new String[]{"Card1", "Card2", "Card3", "Card4"});

    this.comboBox.setEditable(false);

    this.getContentPane().add(comboBox, BorderLayout.PAGE_START);
    this.getContentPane().add(mainContainer, BorderLayout.CENTER);

}


private void initListener(){
    this.comboBox.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            CardLayout cl = (CardLayout) mainContainer.getLayout();
            cl.show(mainContainer, e.getItem().toString());
        }
    });

}

}

Bild zum Beitrag
programmieren, Java
Informatik im Mathestudium?

Hallo, ich möchte zum Wintersemester 2016/17 anfangen Mathe zu studieren. Ich habe bereits eine Zusage der Universität meiner Wahl und war bereits im vergangenen Sommersemester bei einer Vorlesung, bei der ich, obwohl es eine Zweitsemester-Vorlesung war, das Ein oder Andere verstanden habe und eigentlich alles ganz Interessant fand. ABER inzwischen kommen mir erhebliche Zweifel auf. In meiner Freizeit beschäftige ich mich fast ausschließlich mit Computern d.h. mit Betriebssystemen, Programmierung (Kenntnisse habe ich in 8 Skript-bzw. Programmiersprachen(HTML, XML, CSS, PHP, JavaScript, C, Java, Python und bin zusätzlich dran und drauf Assembler zu lernen und Pascal habe ich irgendwann mal in der Schule gelernt, aber da kann man nicht wirklich von Kenntnissen sprechen ;P)) und außerdem setze ich mich gelegentlich auch sehr gerne mit Hardware auseinander. Vom aktuellen Standpunkt aus weiß ich, dass Informatik für mich mit Sicherheit einfacher und passender wäre. Jedoch liegt mir viel daran, das strukturelle und logische Denken, welches im Mathematikstudium vermittelt wird und die aus meiner Sicht annähernd vollkommene Art der Problemlösung zu erlernen. Außerdem bin ich noch reichlich unentschlossen, ob ich mich mein Leben lang mit Programmierung u.Ä. auseinandersetzen will oder doch lieber irgendetwas in Richtung Physik machen möchte. Dennoch bedeutet das Programmieren für mich eine Art Befreiung und hat mich irgendwie aus mancher Lebenskrise befreit. Aufgrund der Tatsache, dass man mit einem Mathematikstudium mehr Möglichkeiten am Ende hat, habe ich mich zunächst für Mathe entschieden, hadere nun aber mit meiner Entscheidung. Deshalb frage ich mich, wie viel Informatik ich letztendlich im Mathematikstudium wiederfinden kann (ich weiß z.B. dass eine Praktikumsmöglichkeit ein Programmierpraktikum darstellt) und wie groß letztendlich die Kluft zwischen den beiden Studiengängen bzw. die des finalen Wissenstandes und Könnens von Studenten beider Studiengänge ist.

Computer, Studium, Schule, Mathematik, IT, programmieren, Entscheidung, Informatik, Physik
Dropdown Menü springt andauernd auf die erste Auswahl zurück - wie kann ich das verhindern?

Ich habe schon an mehreren Stellen nach einer Antwort gesucht, aber keiner konnte mir weiter helfen. Und zwar geht es um eine Software, die ich auf meinem Webspace verwende. Dort gibt es ein paar Dropdown Menüs mit Auswahlmöglichkeiten (Bearbeitungsbereich von einem Userprofil). Soweit, so gut. Wenn ich jetzt aber einen Punkt auswähle und auf "speichern" klicke, springt die Auswahl in dem Dropdown Menü zurück auf den ersten Punkt, sodass ich ihn auf die nächste Bearbeitung erneut auswählen muß. Das will ich aber nicht, denn auf Dauer wird das richtig nervtötend. Ich möchte, dass die zuletzt gesetzte Auswahl abgespeichert wird, sodass ich das bei der Bearbeitung nicht ständig vom neuen setzen muß.

Aber wo kann ich in der Programmierung den Befehl dafür setzen?

Bisher habe ich nur mit CSS Dropdown Menüs gearbeitet, aber soweit ich heraus gefunden habe, läuft dieses hier über JavaScript (hatte noch nie damit zu tun, ist - zumindest im Bereich Dropdown Menü - totales Neuland für mich). Dazu habe ich eine (die einzige) Datei gefunden, wo es einen Befehl dafür gibt, nur leider werde ich nicht so ganz schlau daraus. Vielleicht hat mir ja einer einen Rat dazu? Hier der Ausschnitt:

function(a){var c="dropdown",f="4.0.0",g="bs.dropdown",h="."+g,i=".data-api",j=a.fn[c],k={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK:"click"+h,CLICK_DATA_API:"click"+h+i,KEYDOWN_DATA_API:"keydown"+h+i},l={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open"},m={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",

Ich bin für jede Hilfe dankbar! Denn so langsam verzweifle ich daran.

HTML, programmieren, Java, JavaScript

Meistgelesene Beiträge zum Thema Programmieren