一:问题描述
输入一组数字,找出其中第K大的数。
二:源代码
第一种方法:排序
#include <iostream>
using namespace std;
int main(){
int n,k;
cin >> n >>k;
int num[1000];
for(int i=0;i<n;i++){ //输入
cin >> num[i];
}
for(int i=0;i<n-1;i++){ //排序
for(int j=0;j<n-1-i;j++){
if(num[j]>num[j+1]){
int tmp=num[j];
num[j]=num[j+1];
num[j+1]=tmp;
}
}
}
cout << "第"<<k<<"大的数是:"<<num[k-1]<<endl;
return 0;
}
第二种方法:记录比一个数大的有几个数。如果有K-1,就输出这个数。
#include <iostream>
using namespace std;
int main(){
int n,k;
cin >>n>>k;
int num[10];
for(int i=0;i<n;i++){ //输入
cin >>num[i];
}
for(int i=0;i<n;i++){
int sum=0; //记录比num[i]大的有几个
for(int j=0;j<n;j++)
if(num[j]>num[i])
sum++;
if(sum==k-1){ //如果刚好K-1个,就输出。
cout << num[i]<<endl;
return 0;
}
}
return 0;
}