Bubblesort |
GastAlgo unregistriert
![](images/spacer.gif) |
|
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?
|
|
23.05.2009 09:01 |
|
|
|
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.
|
|
23.05.2009 15:53 |
|
|
GastAlgo unregistriert
![](images/spacer.gif) |
|
Ok, vielen Dank, jetzt hab ich das verstanden :)!
|
|
30.05.2009 11:26 |
|
|
|