pascal 第K极值

来源:百度知道 编辑:UC知道 时间:2024/06/21 10:39:30
var a:array[1..10000] of longint;
n,m,i,j,k:longint; boo:boolean;
function panduan(q:longint):boolean;
begin
if q=1 then begin panduan:=false; exit; end;
if q=2 then begin panduan:=true; exit; end;
panduan:=true;
for i:=2 to trunc(sqrt(q)) do
if q mod i=0 then panduan:=false;
end;
procedure sudu(l,r:longint);
var i,j,x,y:longint;
begin
i:=l; j:=r; x:=a[(i+j)div 2];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if i<=j then begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i); dec(j);
end;
until i>j;
if l<j then sudu(l,j);
if i<r then sudu(i,r);
end;
begin
read(n,m);
for i:=1 to n do read(a[i]);
sudu(1,n);

应该是对的

夜色,让我看下

怎么打不开网站。。。

看你的快排和判断质数的过程应该对。。。
PS下:由于你的procedure里已经有了i和j变量了,主程序里最好不要再有i和j变量,防止出错。。
由于没看题,所以主程序那里的k值不知道是什么,不敢说是不是这里有问题。。。

是不是会出现K<0的情况?