第三题 第k小整数(knumber) 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.输入文件第一行为n和k;第二行开始为n个正整

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 00:50:14

第三题 第k小整数(knumber) 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.输入文件第一行为n和k;第二行开始为n个正整
第三题 第k小整数(knumber)
现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.
输入文件
第一行为n和k;
第二行开始为n个正整数的值,整数间用空格隔开.
输出文件
第k个最小整数的值;若无解,则输出“NO RESULT”.
输入样例
10 3
1 3 3 7 2 5 1 2 4 6
输出样例
3
程序如下:
var a:array[1..10000] of longint;
i,j,n,k,t,h:longint;
begin read(n,k);
for h:=1 to n do read(a[h]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
t:=a[j];
a[j]:=a[i];
a[i]:=t;
end;
i:=1;
j:=1; while (j

第三题 第k小整数(knumber) 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.输入文件第一行为n和k;第二行开始为n个正整
这是不我改的吗?
var a:array[1..10000] of longint;
i,j,n,k,t,h:longint;
begin read(n,k);
for h:=1 to n do read(a[h]);
for i:=1 to n-1 do {这是用了直接选择排序}
for j:=i+1 to n do
if a[i]>a[j] then begin {遇到逆序的就直接交换}
t:=a[j];
a[j]:=a[i];
a[i]:=t;
end; {排序完成}
i:=1; j:=1; {i是第j小的数的第一个}
while (j