【发布时间】:2021-09-04 07:10:56
【问题描述】:
我正在使用 Free Pascal 构建一个函数来对整数数组进行排序,称为 QuickSort,它使用快速排序算法。 这是我的程序:
uses crt;
var
i,n : integer;
A : array[1..100] of integer;
procedure QuickSort(var arr : array of integer; l,r : integer);
var
i,j,y,x : integer;
begin
i := l; j := r;
x := arr[(l+r) div 2];
repeat
while arr[i] < x do inc(i);
while x < arr[j] do dec(j);
if i <= j then
begin
y := arr[i]; arr[i] := arr[j]; arr[j] := y;
inc(i); dec(j);
end;
until i > j;
if l < j then QuickSort(arr,l,j);
if i < r then QuickSort(arr,i,r);
end;
BEGIN
readln(n);
for i := 1 to n do
begin
write('A[',i,'] = ');
readln(A[i]);
end;
QuickSort(A,1,n);
for i := 1 to n do write(A[i]:7);
readln;
END.
无论我的输入是什么,它都不起作用。但是当我改变这个
var
i,n : integer;
A : array[1..100] of integer;
procedure QuickSort(var arr : array of integer; l,r : integer);
进入这个
type
Array_ = array[1..100] of integer;
var
i,n : integer;
A : Array_;
procedure QuickSort(var arr : Array_; l,r : integer);
完美运行。有人可以向我解释吗?谢谢你:))
【问题讨论】:
-
我想知道亲密选民缺少哪些“附加细节”?
标签: arrays quicksort freepascal