第m小数
发布时间: 2017年12月10日 17:46 最后更新: 2017年12月12日 16:39 时间限制: 10000ms 内存限制: 128M
给定N个正整数,数据值范围是1…10000,N个数中可能会有重复数据,你是否可以编个程序求其中第m小的数。对于重复数据,应分别计数,如样例数据所示。
每组测试数据包括两行,第一行是两个正整数N(N<=1000000),M(M<=N),表示有N个测试数据,求第M小的数,第二行给出N个数。最后一行是两个0表示输入结束。
每组测试数据中第m小的数
10 3 14 25 39 22 7 7 31 4 22 67 0 0
7
代码
只用了冒泡。
1 #include <stdio.h> 2 int main(){ 3 int n,m,x; 4 int num[1000]; 5 int i,j; 6 while(scanf("%d%d",&n,&m) != EOF){ 7 if(n == 0 && m == 0) 8 break; 9 i = 0; 10 while(i < n){ 11 scanf("%d",&x); 12 num[i] = x; 13 i++; 14 } 15 for(i = 0; i < n; i++){ 16 for(j = 0; j < n - i - 1; j++){ 17 if(num[j] > num[j+1]){ 18 x = num[j]; 19 num[j] = num[j+1]; 20 num[j+1] = x; 21 } 22 } 23 } 24 for(i = 0; i < m; i++){ 25 if(i == m-1) 26 printf("%d\n",num[i]); 27 } 28 } 29 return 0; 30 }