在N(N<10000)个数里找出第k大的数,C++

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在N(N<10000)个数里找出第k大的数,C++相关的知识,希望对你有一定的参考价值。

求完整C++程序,输入输出一致
输入
有若干个输入,每一个输入包含两行,其中第一行包含两个数N和k,用空格分隔,第二行是N个小于1000000的整数。
如果N为0,则输入结束
输出
每一个输入的例子,输出为一行,包含一个数,后面有 一个换行符

样例输入
5 3
2 4 1 3 6
4 2
1 2 3 4
0 0
样例输出
3
3
求得是N个数中第K大哦······能用堆栈的最好

楼主的样例输出是错的吧。

第二个输入是1 2 3 4.排序后第二个元素应该是2啊

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()

int N,k,i,temp;
vector<int>data;
vector<int>rank;
while(cin>>N>>k,N!=0)

for(i=0;i<N;i++)

cin>>temp;
data.push_back(temp);

sort(data.begin(),data.end());
rank.push_back(data[k-1]);
data.clear();

for(i=0;i<rank.size();i++)
cout<<rank[i]<<endl;
return 0;

追问

没错·········它求的是第N大,所以四个数中第二大的是3

参考技术A #include<string.h>
#include<vector>
#include <algorithm>


int main(void)

vector<int> num;
int i,k,n;
while (cin >> n >> k&&n!=0)
while (n-- > 0)

cin >> i;
num.push_back(i);

sort(num.begin(), num.end());
cout << num[k - 1]<<endl;
num.clear();

return 0;

openjudge 7617:输出前k大的数

7617:输出前k大的数

总时间限制:
10000ms
单个测试点时间限制:
1000ms
内存限制:
65536kB
描述

给定一个数组,统计前k大的数并且把这k个数从大到小输出。

输入
第一行包含一个整数n,表示数组的大小。n < 100000。
第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。
第三行包含一个整数k。k < n。
输出
从大到小输出前k大的数,每个数一行。
样例输入
10
4 5 6 9 8 7 1 2 3 0
5
样例输出
9
8
7
6
5
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 #include<cmath>
 7 using namespace std;
 8 long long a[1000000];
 9 int k=0,t=0;
10 int qsort(int l,int r)
11 {
12     int i=l;
13     int j=r;
14     int mid=a[(l+r)/2];
15     do
16     {
17         while(a[i]<mid)i++;
18         while(a[j]>mid)j--;
19         if(i<=j)
20          {
21              swap(a[i],a[j]);
22          i++;
23          j--;
24          }
25     }while(i<=j);
26     if(j>l)qsort(l,j);
27     if(i<r)qsort(i,r);
28 }
29 int main()
30 {
31     long long n,q;
32     cin>>n;
33     for(long long i=1;i<=n;i++)
34      {
35          cin>>a[i];
36      }cin>>q;
37      qsort(1,n);
38      for(long long i=n;i>=n-q+1;i--)
39       {
40           cout<<a[i]<<endl;
41       }
42       return 0;
43 }

 

以上是关于在N(N<10000)个数里找出第k大的数,C++的主要内容,如果未能解决你的问题,请参考以下文章

输出前 k 大的数

openjudge 7617:输出前k大的数

任意输入n个数,求第k大的数?用C语言,写出完整代码。

编写一个程序解决选择问题。令k=N/2,。画出表格显示程序对于N种不同的值的运行时间。

求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值

010:输出前k大的数