您的位置:首页 > 其它

PAT乙级1045 快速排序

2017-11-27 10:04 323 查看
这里用到的思想主要是对数组副本进行排序,然后与原数组进行对比,同样位置相同则表明有可能是主元,如果大于等于前面的每一个数(用等于是因为包括自身),则一定是主元

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
int N,max=0,numPrimary=0;
long int num[100000],num2[100000];
long int Primarys[100000];
cin>>N;
for(int i=0;i<N;i++){
cin>>num[i];
num2[i]=num[i];
}
sort(num2,num2+N);
for(int i=0;i<N;i++){
if(num[i]>max) max=num[i];
if(num[i]==num2[i]&&num[i]>=max){
Primarys[numPrimary]=num[i];
numPrimary++;
}
}
cout<<numPrimary<<endl;
if(numPrimary==0){
cout<<endl;
}
for(int i=0;i<numPrimary;i++){
if(i==0){
cout<<Primarys[i];
}else{
cout<<" "<<Primarys[i];
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: