问题 2543 --第k小的花生

2543: 第k小的花生★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 321  解决: 236
[提交][状态][命题人:]

题目描述

小红有n颗花生,每颗花生的大小各不相同。现在小红想把第k小的花生找出来吃掉,请编写一个程序找到第k小的花生。

请完善下面程序:

#include <bits/stdc++.h>
using namespace std;
int b[1005];
int i,n,k;
int p(int s,int t)//分成左右两部分,左边花生都比右边的花生小
{
    int i,j,t1,x;
    i=s;
    j=t;
    ______(6)________
    do
    {
        while(b[j]>=x&&j>i)  j=j-1;
        if(j>i)
        {
            t1=b[i];
            b[i]=b[j];
            b[j]=t1;
        }
        while(b[i]<=x&&j>i)  i=i+1;
        if(j>i)
        {
            t1=b[j];
            b[j]=b[i];
            b[i]=t1;
        }
    }_____(7)______;
    b[i]=x;
    return i; 
     
} 
int find(int s, int t, int k)
{
    int p1,q;
    if(s==t) return b[s];
    else
    {
        ______(8)________;
        q=p1-s+1;//统计当前范围内有多少花生比较小 
        if(k<=q) return find(s,p1,k);
        else return ______(9)_______;
    }
}
int main()
{
    cin>>n>>k;
    for(i=1;i<=n;i++)
        cin>>b[i];
    cout<<"kthsmall="<<_____(10)_______<<endl;
    return 0;
}


输入

输入第一行包括两个整数n,k(1<=n<1000, 1<=k<=n),表示有n颗花生,且要找到第k颗花生。

输入第二行包括n个整数Bi (0<=Bi<=1000),表示第i颗花生的大小是Bi。

输出

输出一行包括一个整数,即第k小的花生的大小。
样例输入
Copy
10 5
1  23  54  68  9  8  27  36  97  113
样例输出
Copy
kthsmall=27

提示

来源

[提交][状态]