Hallo,
ich habe wieder ein kleines Problem.
Also ich habe 2 arrays.
a[0] := 0;
a[1] := 4;
a[2] := 0;
a[3] := 1;
harray[0]:= 1;
harray[1]:= 2;
harray[2]:= 3;
harray[3]:= 4;
So, wenn ich dann die Quicksort-Routine aufrufe sollen die Elemente von a sortiert werden.
Die Elemente von harray sollen genau so sortiert werden wie die von a. Also soll rauskommen:
a[0] := 0 vom Element a[0]
a[1] := 0 vom Element a[2]
a[2] := 1 vom Element a[3]
a[3] := 4 vom Element a[1]
und harray muss dann so sortiert sein:
harray[0]:= 1;
harray[1]:= 3;
harray[2]:= 4;
harray[3]:= 2;
Ich habe in die Quicksort-Routine einfach die Zuweisung für harray mit eingefügt.
Aber das funktioniert nicht. Ich weiss nicht wie, aber die Zuordnung für harray ist komplett durcheinander. A wird richtig sortiert. Kann mir da bitte mal jemand helfen?.#Danke
Torsten Müller
Delphi-Quelltext
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:
| procedure TForm3.QuickSort(var A: array of Integer; iLo, iHi: Integer); var Lo, Hi, Mid, T: Integer; begin Lo := iLo; Hi := iHi; Mid := A[(Lo + Hi) div 2]; repeat while A[Lo] < Mid do Inc(Lo); while A[Hi] > Mid do Dec(Hi); if Lo <= Hi then begin T := A[Lo]; A[Lo] := A[Hi]; A[Hi] := T; T := harray[Lo]; harray[Lo] := harray[Hi]; harray[Hi] := T; Inc(Lo); Dec(Hi); end; until Lo > Hi; if Hi > iLo then QuickSort(A, iLo, Hi); if Lo < iHi then QuickSort(A, Lo, iHi); end; |