九度OJ 题目1174:查找第K小数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2195
解决:869
- 题目描述:
查找一个数组的第K小的数,注意同样大小算一样大。
如 2 1 3 4 5 2 第三小数为3。
- 输入:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
- 输出:
输出第k小的整数。
- 样例输入:
62 1 3 5 2 23
- 样例输出:
3
- 来源:
- 2010年北京邮电大学网院研究生机试真题
/********************************** 日期:2013-2-11* 作者:SJF0115* 题号: 九度OJ 题目1174:查找第K小数* 来源:http://ac.jobdu.com/problem.php?pid=1174* 结果:AC* 来源:2010年北京邮电大学计算机研究生机试真题* 总结:**********************************/#include<stdio.h>#include<stdlib.h>#include<string.h>//排序函数int cmp(const void *a,const void *b){return *(int *)a - *(int *)b;}int main(){int n,k,i;int array[1001];//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d",&n) != EOF) {//输入数据for(i = 0;i < n;i++){scanf("%d",&array[i]);}scanf("%d",&k);//排序qsort(array,n,sizeof(array[0]),cmp);int index = 1,flag = 0;//查找for(i = 1;i < n;i++){if(array[i] != array[i-1]){index ++;if(index == k){printf("%d\n",array[i]);flag = 1;break;}}}//数组中数全相等或n = 1 情况if(flag == 0){printf("%d\n",array[0]);} } return 0;}