Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Bubblesort (http://www.informatikerboard.de/board/thread.php?threadid=520)
Geschrieben von GastAlgo am 23.05.2009 um 09:01:
Bubblesort
Ich habe hier folgenden BubbleSort:
public static void BubbleSort(int[]a)
{
for(int i=a.length-1; i>0; i--)
{
boolean getauscht=false;
for(int j=0; j<i; j++)
{
if(a[j]>a[j+1])
{
int h=a[j];
a[j]= a[j+1]
a[j+1]=h;
getauscht=true;
}
}
if(!getauscht) return;
}
}
So, was ich jetzt nicht verstehe ist die erste for Schleife.
Mir ist klar, das nach einem Durchgang das letzte Element nicht mehr betrachtet werden muss.
Dies geschieht dachte ich mir durch das i--.
Aber warum muss ich auch von der a.length eins abziehen?
Ich muss doch im ersten Schritt noch das ganze Array betrachten, und kann nicht schon das erste weglassen!
Was ist da denn mein Denkfehler?
Geschrieben von pi_mal_daumen am 23.05.2009 um 15:53:
Hi!
Dein Denkfehler ist der, dass das erste Arrayelement den Index 0 hat. Ein Array mit n Elementen hat als die Indizes 0, 1, ..., n-1
Wenn du noch einen Index n hättest, dann hätte das Array n+1 Elemente, eben weil du nicht bei 1 anfängst zu zählen, sondern bei 0.
Wenn du 3 (=n) Äpfel hast, dann hast du entweder Apfel1, Apfel2 und Apfel3, oder aber Apfel0, Apfel1 und Apfel2.
Geschrieben von GastAlgo am 30.05.2009 um 11:26:
Ok, vielen Dank, jetzt hab ich das verstanden :)!
Forensoftware: Burning Board, entwickelt von WoltLab GmbH