如果现在,我绝对会利用Java的HashMap去做这道题目
查找第K小数
题目描述:
查找一个数组的第K小的数,注意同样大小算一样大。
如 2 1 3 4 5 2 第三小数为3。
输入:
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出:
输出第k小的整数。
样例输入:
6
2 1 3 5 2 2
3
样例输出:
3
AC代码:
考察的就是简单的快速排序,上我的AC代码
- #include <stdio.h> #include <stdlib.h>
- int partition(int *A, int left, int right);
- void quicksort(int *A, int begin, int end);
- int main() {
- int i, j, n, k; int a[1001];
- while(scanf("%d",&n) != EOF)
- { //接受stdin输入数据
- for(i = 0; i < n; i ++) {
- scanf("%d",a + i); }
- scanf("%d",&k);
- //快速排序 quicksort(a, 0, n - 1);
- //输出第k小的数
- for(i = 0, j = 0; i < n && j < k; i ++) {
- if(a[i] != a[i + 1]) {
- if(j == k - 1) {
- printf("%dn",a[i]); break;
- }else {
- j ++; }
- } }
- }
- return 0; }
- void quicksort(int *A, int begin, int end)
- { int pivot;
- if(begin < end)
- { pivot = partition(A, begin, end);
- quicksort(A, begin, pivot - 1); quicksort(A, pivot + 1, end);










