Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo!
Ich möchte ein String - Array das als Kommandozeilenargument miteingegeben wird lexikographisch aufsteigend sortieren. Vorgabe hierfür ist, immer das "Maximum" (also das letzte Wort) zu finden und dann nach hinten zu tauschen. Ich hab nun auch schon wieder einiges versucht, aber es will einfach nicht funktionieren. Nach momentanem Stand schreibt er immer einfach alle Wörter noch einmal hin .. und die letzten beiden tauscht er einfach aus!
Folgenden Codeausschnitt habe ich für das finden des Maximums und das nach hinten tauschen:
Java:
for (i = 0; i < args.length-1; i++)
aktuell = i;
for (int j=i+1; j<args.length; j++) {
if (args[aktuell].compareTo(args[j]) < 0)
aktuell = j;
}
merk = args[aktuell];
for (int k=aktuell+1; k<args.length; k++) {
args[k-1] = args[k];
}
args[args.length-1] = merk;
Variablen sind alle richtig deklariert.
Ich denke, dass ich auch schon weiß, wo mein Problem liegt, nämlich, dass ich bei der "tausch-schleife" erst bei k=aktuell+1 beginne. Aber wenn ich früher beginne, passt doch gar nichts mehr zusammen, oder wie?
Ich hab einfach keine Ahnung mehr, was ich noch alles machen soll..
Ich habe Deinen Code übernommen und mit dem Testsatz „vorne ist hinten“ gestartet.
Das Ergebnis: hinten ist vorne.
Sortieren kann man einfach über den Index siehe Code.
Java:
class test
{
public static void main (String[] args)
{
int anzahl = args.length;
System.out.println();
for ( int i = 0; i < args.length; i++)
{
System.out.println(args[i]);
}
System.out.println();
for ( int i = anzahl-1; i >= 0; i--)
{
System.out.println(args[i]);
}
}
}
Du brauchst keine Schleife zum tauschen: im Grund könnte es so ablaufen:
Java:
for (int i=args.length-1;i>0;i--) {
for (int j=0;j<=i;j++) {
//max finden und die Position in "max" speichern
}
String tmp = args[i];
args[i] = args[max];
args[max] = tmp;
}
Daanke! Hat super funktioniert
Ich hab gedacht wenn ich ein Array nach hinten tausche, muss ich alle anderen nach vorne bringen und brauch deshalb ne Schleife *g*
Ähhm .. hab ich grad was falsch gemacht oder sortier ich das nun absteigend ?? Beziehungsweise damit das dann aufsteigend sortiert wird, muss ich ja das minimum suchen. Die Vorgabe war aber eindeutig, dass das maximum zu suchen ist und dann nach hinten zu tauschen .
Bist du auch sicher, dass du das Array von hinten durchläufst?
Entweder suchst du dir das Maximum und packst es nach hinten, oder du suchst dir das Minimum und packst es nach vorne. Was du machst ist (glaube ich) das Maximum suchen und nach vorne packen.