proceduresort(i,j:longint);var x,y,z:longint;
var tmp:longint;
begin
x:=i;
y:=j;
Z:=d[(i+j)/2];
repeatwhile z<d[y]
do y:=y-1;
while z>d[x]
do x:=x+1;
if x<=y thenbegin
tmp:=d[x];
d[x]:=d[y];
d[y]:=tmp;
x:=x+1;
y:=y-1;
end;
until x>y;
if x<j then
sort(x,j);
if i<y then
sort(i,y);
end;
C
void swap(int i,int j)
{
int t = list[i];
list[i] = list[j];
list[j] = t;
}
void qqsort(int i,int j)
{
int x,y,z,t;
x = i;
y = j;
z = list[(i+j)/2];
do
{
while(z < list[y])
y --;
while(z > list[x])
x ++;
if(x <= y)
{
swap(x,y);
x ++;
y -- ;
}
}while(x <= y);
if(x < j)
qqsort(x,j);
if(i < y)
qqsort(i,y);
}