BUPT复试专题—找K小数(2011)
https://www.nowcoder.com/practice/204dfa6fcbc8478f993d23f693189ffd?tpId=67&tqId=29637&rp=0&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking
题目描述
查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。
输入描述:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出描述:
输出第k小的整数。
示例1
输入
6
2 1 3 5 2 2
3
统计题目
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string.h> using namespace std; int donser(const void *a,const void *b) { return *(int *)b-*(int *)a;//反->大到小 } int main() { int num,k; while(scanf("%d",&num)!=EOF) { int data[1001],i=0; while(i<num) scanf("%d",&data[i++]); scanf("%d",&k); qsort(data,num,sizeof(int),donser); while(1) { int temp=data[--num]; while(temp==data[--num]); num++; if(k==1) { cout<<data[num]<<endl; break; } k--; } } return 0; }
输出
3