九度oj 1174

来源:互联网 发布:徐志雷ti7知乎 编辑:程序博客网 时间:2024/04/30 19:28
题目描述:

查找一个数组的第K小的数,注意同样大小算一样大。 
如  2 1 3 4 5 2 第三小数为3。

输入:

输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。

输出:

输出第k小的整数。

样例输入:
62 1 3 5 2 23
样例输出:
3
来源:

2010年北京邮电大学网院研究生机试真题

#include<iostream>  #include<algorithm>  using namespace std;  struct A  {         int a;         int cnt;         }edge[10001];         bool cmp(A p,A q)         {              return p.a<q.a;              }  int main()  {      int n;int a[10001];      while(cin>>n)      {                   for(int i=1;i<=n;i++)                   {                     cin>>edge[i].a;                     }                     int k;                   cin>>k;                   for(int i=1;i<=n;i++)                     {                             a[i]=edge[i].a;                             }                     sort(edge+1,edge+n+1,cmp);                     int u=1;                     edge[1].cnt=1;                     for(int j=1;j<=n;j++)                     {                          if(j==1)  continue;                             if(edge[j].a==edge[j-1].a)                             {                             edge[j].cnt=u;                             }                             else                             {                                 edge[j].cnt=u+1;                                 u=u+1;                                 }                                                                  }                          for(int i=1;i<=n;i++)                        {                                if(edge[i].cnt==k)                                {                                   cout<<edge[i].a<<endl;                                   }                                   }                                                                          }                                     }  


0 0
原创粉丝点击