根据算导写的。
用快速排序的划分过程,表示出一个元素在数组里是第几大。
然后分情况讨论。
注意细节!!
如,j=i-l+1;
exit(find(...));的exit;
function Find(l,r,k:longint):longint;
var
x,i,j,t:longint;
begin
if l=r then exit(s[l]);
swap(s[(l+r)div 2],s[r]);
x:=s[r];
i:=l-1;
for j:=l to r-1 do
begin
if s[j]<=x then
begin
inc(i);
swap(s[i],s[j]);
end;
end;
inc(i);swap(s[i],s[r]);
j:=i-l+1;
if j=k then exit(s[i]);
if j<k then exit(find(i+1,r,k-j))
else exit(find(l,i-1,k));
end;