第k小的数-桶排序

题号: 10066
时限:1000ms
限制内存:32768KB
题目: 第k小的数

描述

给定一个数组a和一个整数k, 找出数组中第k小的数. (注意, 本题中相等的数看作不同, 比如数列{1, 2, 2, 3}中第3小的数是2而不是3)
输入格式

第一行, 两个整数, n(1<=n<=5000000)表示数组的元素个数, k(1<=k<=n).
第二行, 数组中的n个整数(1<=a[i]<=10000).
输出格式

输出第k小的数.
输入样例

4 3
1 2 2 3
输出样例

2
#include<stdio.h>
int m[10000]={0}; 
int main()
{
    int i,n,a,j,k;
    scanf("%d%d",&n,&k);
    for(i=0;i<n;++i)
    {
        scanf("%d",&a);
        m[a]++;
    }
    int count=0;
    for(i=1;i<=10000;++i)
    {
        if(m[i]!=0)
        {
            for(j=0;j<m[i];++j)
            {
                count++;
                if(count==k)
                {
                    printf("%d\n",i);
                    break;
                }
            }
        }
    }
    return 0;
} 

猜你喜欢

转载自blog.csdn.net/gz153016/article/details/80405845