第三题 第k小整数(knumber) 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.输入文件第一行为n和k;第二行开始为n个正整
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 18:24:51
![第三题 第k小整数(knumber) 现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤4000,正整数均小于30000.输入文件第一行为n和k;第二行开始为n个正整](/uploads/image/z/3693028-4-8.jpg?t=%E7%AC%AC%E4%B8%89%E9%A2%98+%E7%AC%ACk%E5%B0%8F%E6%95%B4%E6%95%B0%28knumber%29+%E7%8E%B0%E6%9C%89n%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0%2Cn%E2%89%A410000%2C%E8%A6%81%E6%B1%82%E5%87%BA%E8%BF%99n%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0%E4%B8%AD%E7%9A%84%E7%AC%ACk%E4%B8%AA%E6%9C%80%E5%B0%8F%E6%95%B4%E6%95%B0%EF%BC%88%E7%9B%B8%E5%90%8C%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%95%B4%E6%95%B0%E5%8F%AA%E8%AE%A1%E7%AE%97%E4%B8%80%E6%AC%A1%EF%BC%89%2Ck%E2%89%A44000%2C%E6%AD%A3%E6%95%B4%E6%95%B0%E5%9D%87%E5%B0%8F%E4%BA%8E30000.%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E7%AC%AC%E4%B8%80%E8%A1%8C%E4%B8%BAn%E5%92%8Ck%EF%BC%9B%E7%AC%AC%E4%BA%8C%E8%A1%8C%E5%BC%80%E5%A7%8B%E4%B8%BAn%E4%B8%AA%E6%AD%A3%E6%95%B4)
第三题 第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