level 1
ysjkejd
楼主
在复习快排的时候突然发现了这个问题,以前从没有出现过的。 好奇怪的样子。以下为主程序。
********************************************
program quicksort ;
var
q,r,i,j,x:longint ;
a:array [1..10000]of longint;
procedure exchange(c,d:integer); // 交换过程
var
k:integer;
begin
k:=c;
c:=d;
d:=k;
end;
function partition(a:array of longint;q,r:longint):longint; //求快排的分隔下标
begin
x:=a [r];
i:=q-1;
for j:=q to r-1 do
if a[j]<=x then
begin
i:=i+1;
exchange(a[j],a[b]);
end;
exchange(a[i+1],a[r]);
partition:=i+1;
end;
procedure qsort(a:array of longint ;q,r:longint); //简单的递归
var
p:longint;
begin
if q<r then
p:=partition(a,q,r);
qsort(a,q,p-1);
qsort(a,p+1,r);
end;
begin //主程序
for i:=1 to 3 do
read(a[i]);
qsort(a[i],1,3);
for i:=1 to 10 do
write(a[i],' ');
end.
*****************************************
用f7找错误的时候提示在这一句

这些错误的原因我都从来没有遇到过啊,这要怎么改啊,改了快1个多小时了。还完全不知道该怎么办。希望大神们教一下啊
2014年07月14日 16点07分
1
********************************************
program quicksort ;
var
q,r,i,j,x:longint ;
a:array [1..10000]of longint;
procedure exchange(c,d:integer); // 交换过程
var
k:integer;
begin
k:=c;
c:=d;
d:=k;
end;
function partition(a:array of longint;q,r:longint):longint; //求快排的分隔下标
begin
x:=a [r];
i:=q-1;
for j:=q to r-1 do
if a[j]<=x then
begin
i:=i+1;
exchange(a[j],a[b]);
end;
exchange(a[i+1],a[r]);
partition:=i+1;
end;
procedure qsort(a:array of longint ;q,r:longint); //简单的递归
var
p:longint;
begin
if q<r then
p:=partition(a,q,r);
qsort(a,q,p-1);
qsort(a,p+1,r);
end;
begin //主程序
for i:=1 to 3 do
read(a[i]);
qsort(a[i],1,3);
for i:=1 to 10 do
write(a[i],' ');
end.
*****************************************
用f7找错误的时候提示在这一句

这些错误的原因我都从来没有遇到过啊,这要怎么改啊,改了快1个多小时了。还完全不知道该怎么办。希望大神们教一下啊