[C#] Multidimensionales Array sortieren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Hapablap, 17. Juli 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. Juli 2009
    Multidimensionales Array sortieren

    Hi,

    Ich versuch hier gerade eine Textdatei auszulesen und sie danach in einem multidimensionalen Array zu sortieren.
    Mein Array heißt Teilinfo, jeder Eintrag steht für einen Schüler, in jedem Eintrag sind wiederum 6 Einträge für: Klasse, Name, Vorname, Note 1, Note 2 und Note 3.

    Hier ist die Txt
    Spoiler
    Klasse 1;XBenning;Walter; 2,5 ; 2,5 ; 2,5
    Klasse 1;Bruederlin;Herbert; 1,7 ; 1,3 ; 2,8
    Klasse 1;Buhl;Helmut; 4,6 ; 3,6 ; 3
    Klasse 1;Froehlich;Claudia; 3,6 ; 3,3 ; 6
    Klasse 1;Gebhard;Rainer; 3,6 ; 1,7 ; 1,7
    Klasse 1;XGerhardt;Ruediger; 4,4 ; 3,8 ; 2,2
    Klasse 1;Gorlitz;Claudia; 3,8 ; 4,5 ; 2,7
    Klasse 1;Graf;Ulrike; 4,3 ; 3,3 ; 3,3
    Klasse 1;Hertlein;Juergen; 3,6 ; 3,3 ; 3,4
    Klasse 1;Hoeflein;Klaus Michael; 3,3 ; 3,6 ; 1,7
    Klasse 1;Huber;Renate; 2,7 ; 1,7 ; 1,7
    Klasse 1;Jennen;Helmut; 4,8 ; 4,1 ; 4
    Klasse 1;Kaden;Erich; 1,4 ; 3,6 ; 1,6
    Klasse 1;Koch;Franz; 1,6 ; 1,3 ; 2,4
    Klasse 1;Krapf;Marius; 1,8 ; 3,3 ; 4,7
    Klasse 1;Kuehlewein;Rolf; 1,7 ; 3,6 ; 4,9
    Klasse 1;Mergner;Wilhelm; 3,3 ; 2,1 ; 3,5
    Klasse 1;Mueller;Achim; 3,1 ; 2,1 ; 1,7
    Klasse 1;Mueller;Siegfried; 2,4 ; 2,1 ; 3,7
    Klasse 1;Nold;Volker; 2,3 ; 3,8 ; 4,7
    Klasse 1;Palesch;Sabine; 2,1 ; 2,7 ; 6
    Klasse 1;Reiling;Juergen; 2,1 ; 3,6 ; 3,1
    Klasse 1;Sandfuchs;Hartmut; 1,3 ; 3,6 ; 4,5
    Klasse 1;Tobaschus;Martin; 1,3 ; 1,6 ; 3,8
    Klasse 1;Vogt;Kurt; 4,5 ; 2,7 ; 5,3
    Klasse 1;Walter;Rainer; 2,7 ; 1,4 ; 1,3
    Klasse 1;Walz;Tim; 4,1 ; 4,4 ; 2,1
    Klasse 2;Barthel;Klaus-Juergen; 2,6 ; 2,7 ; 4,5
    Klasse 2;Bauer;Klaus; 4,4 ; 4,8 ; 6
    Klasse 2;Bosch-Klement;Wolfgang; 4,1 ; 4,3 ; 1,3
    Klasse 2;Burkard;Falk; 3,2 ; 3,3 ; 3,7
    Klasse 2;Ebinger;Rüdiger; 2,7 ; 3,6 ; 2,2
    Klasse 2;Fladt;Heinrich; 2,1 ; 2,1 ; 3,3
    Klasse 2;Fritz;Oliver; 4,6 ; 3,8 ; 4
    Klasse 2;Haug;Markus; 3,6 ; 3,2 ; 3,3
    Klasse 2;Helle;Markus; 4,8 ; 2,7 ; 3,1
    Klasse 2;Hentschel;Jürgen; 2,1 ; 2,1 ; 3
    Klasse 2;Hirtz;Heinz; 1,7 ; 2,4 ; 4,5
    Klasse 2;Huber;Dieter; 3,6 ; 1,6 ; 3,1
    Klasse 2;Hug;Frauke; 3,6 ; 2,8 ; 3,6
    Klasse 2;Meessen;Hans-Dieter; 3,3 ; 2,1 ; 2,3
    Klasse 2;Metzger;Egon; 3,6 ; 2,1 ; 3,5
    Klasse 2;Pfuhl;Juergen; 2,4 ; 1,7 ; 6
    Klasse 2;Rommel;Hans-Walter; 4,3 ; 2,4 ; 1,7
    Klasse 2;Schaal;Ana; 2,8 ; 4,6 ; 2,2
    Klasse 2;Schurr;Richard; 3,6 ; 2,7 ; 1,3
    Klasse 2;Supper;Lena; 2,7 ; 3,6 ; 6
    Klasse 2;Unseld;Kristine; 1,6 ; 3,6 ; 1,4
    Klasse 2;Waizmann-Berger;Gerhard; 2,1 ; 4,3 ; 3,8
    Klasse 2;Wevelinghoven;Karl; 3,8 ; 4,1 ; 1,7
    Klasse 2;Wieland;Armin; 2,1 ; 3,6 ; 2,7
    Klasse 3;Braun;Wolfgang; 3,6 ; 3,8 ; 4,8
    Klasse 3;Brecht;Klaus Dieter; 3,8 ; 3,3 ; 2,4
    Klasse 3;Brentle;Marco; 2,1 ; 3,6 ; 3,2
    Klasse 3;Brust;Hermann; 3,6 ; 2,7 ; 1,6
    Klasse 3;Germer;Norbert; 3,2 ; 4,8 ; 2,1
    Klasse 3;Gilbert;Peter; 1,6 ; 4,1 ; 2,7
    Klasse 3;Huber;Jörg; 3,3 ; 2,7 ; 2,1
    Klasse 3;Kaluscha;Horst; 3,3 ; 4,8 ; 3,6
    Klasse 3;Krug;Christine; 2,4 ; 2,1 ; 4,6
    Klasse 3;Lang;Reinhold; 4,6 ; 3,2 ; 4,3
    Klasse 3;Lienig;Johannes; 2,7 ; 1,7 ; 3,6
    Klasse 3;Manner;Georg; 4,8 ; 2,4 ; 2,7
    Klasse 3;Mueller-Hedrich;Elisabeth; 2,7 ; 2,4 ; 2,8
    Klasse 3;Schonwetter;Karin; 3,6 ; 1,6 ; 3,3
    Klasse 3;Schweikardt;Bernhard; 4,1 ; 2,1 ; 1,7
    Klasse 3;Wagner;Martin; 3,8 ; 3,2 ; 2,1
    Klasse 3;Wedekind;Robert; 2,8 ; 4,6 ; 4,1
    Klasse 3;Wiedenroth;Heinz; 2,7 ; 4,6 ; 4,4
    Klasse 3;Wolf;Karl-Heinz; 1,7 ; 3,6 ; 3,8
    Klasse 3;Wolf;Margrit; 2,1 ; 3,6 ; 3,6

    Meine Methode: (funktioniertleider nicht)
    Code:
     private void schülerlisteSortieren(int anzahlEinträge)
     {
     string[] temp = new string[6];
     int zählervariable = 0;
     bool sortiert = false;
    
     while (sortiert == false)
     {
     if (zählervariable < anzahlEinträge)
     {
     if (String.Compare(Teilinfo[0, zählervariable + 1], Teilinfo[0, zählervariable]) == 1)
     {
     temp[0] = Teilinfo[zählervariable + 1, 0];
     temp[1] = Teilinfo[zählervariable + 1, 1];
     temp[2] = Teilinfo[zählervariable + 1, 2];
     temp[3] = Teilinfo[zählervariable + 1, 3];
     temp[4] = Teilinfo[zählervariable + 1, 4];
     temp[5] = Teilinfo[zählervariable + 1, 5];
    
     Teilinfo[0, zählervariable + 1] = Teilinfo[0, zählervariable];
    
     Teilinfo[zählervariable, 0] = temp[0];
     Teilinfo[zählervariable, 1] = temp[1];
     Teilinfo[zählervariable, 2] = temp[2];
     Teilinfo[zählervariable, 3] = temp[3];
     Teilinfo[zählervariable, 4] = temp[4];
     Teilinfo[zählervariable, 5] = temp[5];
     zählervariable = 0;
     }
     else
     {
     zählervariable++;
     }
     sortiert = false;
     }
     else
     {
     sortiert = true;
     }
     }
     }
     
  2. 17. Juli 2009
    AW: Multidimensionales Array sortieren

    Versteh zwar nicht 100% was du da machst, da du eine klassenvariabel verwendest.

    Aber an sich empfehle ich folgendes Vorgehen.
    Streamreader und file zeilenweise auslesen.
    string.split mit ";"
    danach solltest du ein Array mit 6 Feldern haben.

    Was willst du überhaupt soriteren ?
     
  3. 17. Juli 2009
    AW: Multidimensionales Array sortieren

    Ok also ich habs jetzt geschafft, hatte es etwas eilig, da ich es für jemand anders machen musste und er es gleich braucht

    Hier meine Lösung, ist jetzt nicht so optimal, aber C# ist nicht meine Stärke

    Code:
     private void schülerlisteSortieren(int anzahlEinträge)
     {
     // temporärer Array für Tausch ( a => temp, b => a, temp => b)
     string[] temp = new string[6];
     // Zählervariable zum Überprüfen, ob die Schleife am Ende der Schülerliste angekommen ist
     int zählervariable = 0;
     // Status, ob das Array sortiert ist
     bool sortiert = false;
    
     // Sortierschleife, solange Array nicht sortiert ist
     while (sortiert == false)
     {
     // Array durchgehen bis zum Ende (bei Fund / Tausch wird wieder von vorne begonnen)
     if (zählervariable < anzahlEinträge)
     {
     // Nachnamen vergleichen
     if (String.Compare(Teilinfo[(zählervariable + 1), 1], Teilinfo[zählervariable, 1]) == 1)
     {
     // Tauschvorgang:
    
     // Array in temporäres Array zwischenspeichern
     temp[0] = Teilinfo[zählervariable, 0];
     temp[1] = Teilinfo[zählervariable, 1];
     temp[2] = Teilinfo[zählervariable, 2];
     temp[3] = Teilinfo[zählervariable, 3];
     temp[4] = Teilinfo[zählervariable, 4];
     temp[5] = Teilinfo[zählervariable, 5];
    
     // Erstes Array mit zweitem überschreiben
     Teilinfo[zählervariable, 0] = Teilinfo[zählervariable + 1, 0];
     Teilinfo[zählervariable, 1] = Teilinfo[zählervariable + 1, 1];
     Teilinfo[zählervariable, 2] = Teilinfo[zählervariable + 1, 2];
     Teilinfo[zählervariable, 3] = Teilinfo[zählervariable + 1, 3];
     Teilinfo[zählervariable, 4] = Teilinfo[zählervariable + 1, 4];
     Teilinfo[zählervariable, 5] = Teilinfo[zählervariable + 1, 5];
    
     // temporäres Array in zweites Array
     Teilinfo[zählervariable + 1, 0] = temp[0];
     Teilinfo[zählervariable + 1, 1] = temp[1];
     Teilinfo[zählervariable + 1, 2] = temp[2];
     Teilinfo[zählervariable + 1, 3] = temp[3];
     Teilinfo[zählervariable + 1, 4] = temp[4];
     Teilinfo[zählervariable + 1, 5] = temp[5];
    
     // Zählervariable auf 0 zurück setzen, damit die Liste von vorne durchgegangen wird
     zählervariable = 0;
     }
     else
     {
     // Zählervariable um 1 erhöhen, um das nächste Listenelement im nächsten Durchlauf anzusprechen
     zählervariable++;
     }
     // Liste ist nicht sortiert
     sortiert = false;
     }
     else
     {
     // Liste ist komplett durch, also wird davon ausgegangen, dass sie fertig sortiert ist
     sortiert = true;
     }
     }
     }
    - closed -
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.