Wer kann mir helfen ein BubbleSort-Programm mit Java zu erstellen? Das Problem bei mir ist die äußere Schleife. Dazu noch folgendes, es dürfen nur while- und if-Schleifen benutzt werden.
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
public static void sortiere(int[] a)
{
boolean sortiert = false;
int Count = 0;
int tmp;
while (!sortiert)
{
sortiert = true;
Count = 0;
While Count {
if (a[Count] > a[Count + 1])
{
tmp = a[Count];
a[Count] = a[Count + 1];
a[Count + 1] = tmp;
sortiert = false;
}
Count++;
}
}
}
Das sollte so funzen
Als Informatiker muss ich da einfach noch meinen Senf dazugeben:
Nach dem ersten Durchlauf ist das größte Element von a an der letzten Position.
Im n.ten Durchlauf wird das n-größte Element auf die n-letzte Position geschoben. Unter keinen Umständen weiter.
Daher kannst du eigentlich den n-ten Durchlauf um n Elemente verkürzen.
Du brauchst eine neue Variable die zählt wie oft du schon sortiert hast
int sortrun = 1;
und ersetzt die obige schleife
while (count {
...
}
durch
while (count {
...
}
sortrun++;
Nicht das es groß was ausmacht...
Für eine ausreichend große Datenmenge brauchst du jetzt nicht mehr 2 sondern nurnoch 1 Jahr... wo andere Algorithmen ungefähr ne Minute rechnen. Aber aller Anfang ist schwer... und langsam
Lass dich nicht entmutigen, viel Erfolg Raphael
Dreamforger
Moin,
diese Anmerkung ist sicher richtig.
Aber es handelt sich hierbei um eine Optimierung, die nicht zum eigentlichen BubbleSort-Algorithmus gehört.
Aber trotzdem Danke für diesen Tip.