String Array sortieren (Bubble)

Status
Nicht offen für weitere Antworten.

kreilinger

Neues Mitglied
hallo forum,

habe mich früher mal kurz mit java beschäftigt ...
unter anderem habe ich mal eine methode geschrieben, mit der ich ein integer-array aufsteigend sortieren konnte (glaube das heißt bubble oder sowas)

der code dazu wa das:

Code:
private static void sort(int[] a)
{
    for(int i = a.length - 1; i > 0; i--)
    {
         for(int j = 0; j < i; j++)
         {
             if(a[j] > a[j + 1])
             {
                 int z = a[j];
                 a[j] = a[j + 1];
                 a[j + 1] = z;
             }
         }
     }
}

das selbe müsste doch auch so ähnlich mit einem StringArray gehen (also alphabetisch dann) , oder?


in der java6-dok hab ich auch noch " compareTo() " gefunden, weiß aber grad nicht, wie ich das verwenden soll?


danke im voraus,
kreilinger
 
S

SlaterB

Gast
überlege dir als erstes was
a[j] > a[j + 1]
ist, bedeutet, und Auswirkung auf deinen Algorithmus hat,

da sind zum einen die etwas kryptischen Array-Indexe,
dann letztlich nur noch
zahl1 > zahl2

das müsste irgendwie in dein Gehirn reingehen zum Verstehen,

-----

so, nun geht > oder < für Strings nicht, dafür gibts aber string1.compareTo(string2),
in der API kannst du eine ganze Seite dazu nachlesen,
ein entscheidener Satz:

Returns:
the value 0 if the argument string is equal to this string; a value less than 0 if this string is lexicographically less than the string argument; and a value greater than 0 if this string is lexicographically greater than the string argument.

kommt dir bekannt vor? also einsetzen,
ein bisschen musst du aber schon alleine denken
 

kreilinger

Neues Mitglied
danke, habs schon gelöst (siehe code)

lg
kreilinger

Code:
private static void sort(String[] a)
{
    for(int i = a.length - 1; i > 0; i--)
    {
         for(int j = 0; j < i; j++)
         {
             if((a[j].compareTo(a[j + 1])) > 0)
             {
                 String z = a[j];
                 a[j] = a[j + 1];
                 a[j + 1] = z;
             }
         }
     }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben