【发布时间】:2014-06-21 10:05:59
【问题描述】:
我对问题 Quicksort drama 的答案睡了一觉,想从头开始重新编码,用引用调用 var 实现您的提示。再说一遍:我再也找不到任何失败了。我将代码与您的程序一一比较,但找不到问题。以下代码在编译/运行期间产生异常(External:SIGSEV at address 11602)
program quicksort;
var
iArray : array[0..8] of integer;
procedure fillArray(var iArray : array of integer);
begin;
iArray[0] := 3;
iArray[1] := 1;
iArray[2] := 8;
iArray[3] := 4;
iArray[4] := 9;
iArray[5] := 0;
iArray[6] := 8;
iArray[7] := 2;
iArray[8] := 5;
end;
procedure writeArray(iArray : array of integer);
var i:integer;
begin
for i:=low(iArray) to high(iArray) do begin
write(iArray[i]);
end;
writeln('');
end;
procedure quickSort(var iArray : array of integer; links : integer; rechts:integer);
var
l,r,pivot, temp: integer;
begin
if (rechts > links) then begin
l := links;
r := rechts;
pivot := iArray[(rechts+links) div 2];
while (l<r) do begin
while (iArray[l] < pivot) do l:=l+1;
while (iArray[r] > pivot) do r:=r-1;
if (l<=r) then begin
temp := iArray[l];
iArray[l] := iArray[r];
iArray[r] := temp;
end;
end;
if (links < r) then quickSort(iArray, links, r);
if (l < rechts) then quickSort(iArray, l, rechts);
end;
end;
begin
fillArray(iArray);
quickSort(iArray,low(iArray),high(iArray));
writeArray(iArray);
end.
【问题讨论】:
-
这是 Stack Overflow 的边界题外话,它不是调试代码会话的站点(一旦有一个“过于本地化”的密切原因,这将是恰当的)。为了增加它对站点的未来访问者有用的机会,您应该编辑它以具有有意义的标题(遇到相同问题的人可以搜索的东西),格式正确的代码并且没有德语参数名称。
-
能否请您开始养成正确缩进的习惯?