Hi,
ich muss ein Array mit Quicksort sortieren. Hier der Quellcode der Procedure:
Delphi-Quellcode:
var
QS_liste:
Array[1..10]
of integer;
l_pos, r_pos, pivot, temp, pivot_feld : integer;
{...}
procedure Quicksort(
var a:
array of integer; anfang, ende:integer);
var i: integer;
begin
pivot_feld := (anfang+ende)
div 2;
pivot := a[pivot_feld];
l_pos := anfang;
r_pos := ende;
repeat
while a[l_pos] < pivot
do inc(l_pos);
while a[r_pos] > pivot
do dec(r_pos);
if l_pos < r_pos
then begin
temp := a[l_pos];
a[l_pos] := a[r_pos];
a[r_pos] := temp;
inc(l_pos);
dec(r_pos);
end;
until (l_pos > r_pos) ;
if (anfang < r_pos)
then quicksort(a, anfang, r_pos);
if (l_pos < ende)
then quicksort(a, l_pos, ende);
end;
ich rufe diese procedure so auf:
QuickSort(QS_liste, 1, 10);
DAs problem ist, dass er komischerweise immer ein Feld verändert.
z.b.:
in qs_liste vor beginn der procdure:
2, 54, 48, 1, 85, 2, 58, 77, 92, 31
nach dem das programm gelaufen ist wurde z.b. die zahl 48 durch die zahl 7 ersetzt.
Wäre für eure hilfe sehr dankbar.
mfg
bonanza