Problem mit Quicksort

Neue Frage »

Auf diesen Beitrag antworten »
Fred Problem mit Quicksort

Hallo, ich lerne gerade für ne Informatik klausur

im script vom prof ist folgendes beispiel

img517.imageshack.us/img517/5489/quicksort.jpg

und der code für den quicksort ist so angegeben

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
Die folgende rekursive Funktion quicksort 
wird mit den aktuellen
Parametern L = 1 und R = n aufgerufen:

void quicksort (int a[], int L, int R){

int i, j, w, x;
i=L; j=R;
x=a[(L+R)/2];

do {

while (a[i]<x) i++;
while (a[j]>x) j--;

if (i<=j){ 

w=a[i]; a[i]=a[j]; a[j]=w;
i++; j--;
}

} while (i<=j);

if (L<j) quicksort(a, L, j);
if (i<R) quicksort(a, i, R);
}


also die erste runde habe ich mir erklärt bekommen anhand des code

jetzt wollte ich bei der 2ten runde weiter machen,

wenn ich jetzt aber in Runde 2 so mit dem code weiter mache wie ich es bei 1 gemacht habe dann würde ich zu erst 4 und 2 tauschen

weil

i = 1
j = 4

x = a[2] = 1

while (a[i]<x) i++;

a[1] = 4

4 ist nicht kleiner als 1 , also auch nicht i++

while (a[j]>x) j--;

a[4] = 3

3 ist größer als 1, also j--

a[1] = 4
a[3] = 2

und diese beiden tauschen

auf jeden fall habe ich das so in Runde 1 gemacht und da funktioniert das

warum ist das bei runde 2 und den nachfolgenden anders ?

wäre super wenn mir da jemand helfen könnte
 
Auf diesen Beitrag antworten »
fred hat sich erledigt

frage hat sich erledigt

hab den code falsch gelesen und das passte leider zufällig

hab noch ein weiteres beispiel gefunden und das nun verstanden
 
Neue Frage »
Antworten »


Verwandte Themen

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