Stefan Neumann: 2d Array sortieren

Hi Alle,

ich versuche verzweifelt ein 2dimensionales Array zu sortieren. Mein Array besteht aus 50 Elementen, diese jeweils aus einem Array mit 4 Elementen.

Wie kann ich nun dieses Array nach dem 2. Wert (also
Array[i][1]) sortieren ??

Die normale Array.sort() funktion sortiert nach dem 1. Element (Array[i][0])

Vielleicht kann mir jemand weiter helfen !!

Stefan Neumann

  1. Hi!

    Wie kann ich nun dieses Array nach dem 2. Wert (also Array[i][1]) sortieren ??
    Die normale Array.sort() funktion sortiert nach dem 1. Element (Array[i][0])

    Wenn Du nicht selbst einen Sortieralgorithmus implementieren möchtest, dann lege ein
    weiteres 2-dimensionales Array an, in dessen 0-tes Element (z. B. tmpArr[i][0}) Du die Werte einträgst,
    nach denen Du DEIN Array sortieren willst. In das 1-tes Element (z. B. tmpArr[i][1]) schreibst Du den Index,
    an welchem das Element in DEINEM Array liegt. Nun sortierst Du dieses Array (z. B. mit tmpArr.sort())
    und hast, wenn Du dieses einmal durchläufst, die Reihenfolge, in welche Du die Elemente DEINES
    Arrays umsortieren mußt.

    Hab' ich mich deutlich genug ausgedrückt?!?

    Enjoy IT,
    Andreas

  2. Hi,

    Du kannst bei sort() eine Vergleichsfunktion als Parameter angeben und darüber beliebige Sortierreihenfolgen realisieren.

    Siehe <../../tecc.htm#a11>

    Wenn der Hinweis nicht reicht, melde Dich nochmal.

    Gruß
    Steffen

    1. Auch Hi!

      Siehe <../../tecc.htm#a11>

      Imho etwas besser beschrieben auf http://developer.netscape.com/docs/manuals/js/client/jsref/array.htm#1196882.

      So long

    2. Hi,

      Du kannst bei sort() eine Vergleichsfunktion als Parameter angeben und darüber beliebige Sortierreihenfolgen realisieren.

      Siehe <../../tecc.htm#a11>

      Wenn der Hinweis nicht reicht, melde Dich nochmal.

      Gruß
      Steffen

      Vielen Dank,

      ich kann dort leider nicht rauslesen, WIE ich diese Suchreihenfolgen realisieren kann.

      Weißt du zufällig welcher Sortieralgorithmus mit der sort() function implementiert ist ??

      mfg

      Stefan Neumann

      1. ich kann dort leider nicht rauslesen, WIE ich diese Suchreihenfolgen realisieren kann.

        Stimmt. Ich habe mir den Text gerade nochmal genauer angesehen, da fehlen tatsächlich wichtige Aussagen. Wahrscheinlich habe ich die Methode in einem anderen Teil von SelfHTML gesehen.

        Ich versuche mal, das Prinzip zu erklären: Alles, was ein Sortieralgorithmus braucht, um die richtige Reihenfolge herzustellen, ist eine Vergleichsfunktion, d.h. welches von zwei Elementen soll am Ende vor dem anderen stehen. I.d.R. muß diese Vergleichsfunktion nicht angegeben werden, da nach Größe (Zahlen) bzw. Alphabet (Strings) sortiert werden soll. Der gleiche Algorithmus kann aber auch z.B. Namen nach dem schönen Klang sortieren, dazu braucht er nur eine andere Vergleichsfunktion.

        Für sort() brauchst Du eine Vergleichsfunktion, deren Ergebnis <0 oder >0 ist - je nachdem, ob das erste oder das zweite Argument weiter hinten in der Reihenfolge stehen soll (=0, falls egal). In Deinem Fall soll nach dem zweiten Index der Elemente sortiert werden, die Vergleichsfunktion müsste also etwa so aussehen:

        function byIndex1(a,b)
        {
        if (a[1]<b[1]) return 1;
        else if (b[1]<a[1]) return -1;
        else return 0;
        }

        Und dann sortierst Du einfach mit

        Array.sort(byIndex1)

        Gruß
        Steffen