北邮考研复试C语言上机题目精选

2020-01-06 13:42:03王旭

如果现在,我绝对会利用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代码

 

 
  1. #include <stdio.h>   #include <stdlib.h>  
  2.   int partition(int *A, int left, int right);  
  3. void quicksort(int *A, int begin, int end);    
  4. int main()   {  
  5. int i, j, n, k;   int a[1001];  
  6.   while(scanf("%d",&n) != EOF)  
  7. {   //接受stdin输入数据  
  8. for(i = 0; i < n; i ++)   {  
  9. scanf("%d",a + i);   }  
  10. scanf("%d",&k);    
  11. //快速排序   quicksort(a, 0, n - 1);  
  12.   //输出第k小的数  
  13. for(i = 0, j = 0; i < n && j < k; i ++)   {  
  14. if(a[i] != a[i + 1])   {  
  15. if(j == k - 1)   {  
  16. printf("%dn",a[i]);   break;  
  17. }else  {  
  18. j ++;   }  
  19. }   }  
  20. }    
  21. return 0;   }  
  22.   void quicksort(int *A, int begin, int end)  
  23. {   int pivot;  
  24.   if(begin < end)  
  25. {   pivot = partition(A, begin, end);  
  26. quicksort(A, begin, pivot - 1);   quicksort(A, pivot + 1, end);