Bubblesort

Neue Frage »

Auf diesen Beitrag antworten »
GastAlgo 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?
 
Auf diesen Beitrag antworten »
pi_mal_daumen

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.
Auf diesen Beitrag antworten »
GastAlgo

Ok, vielen Dank, jetzt hab ich das verstanden :)!
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »