1101 Quick Sort (25 分)
思路
不需要考虑空间,考虑时间即可。
多开几个空间,使用 O ( n ) O(n) O(n)而不是 O ( n 2 ) O(n^2) O(n2)
输出格式问题,一般是没有输出,但需要回车,cout<<endl;即可
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int num[100005];
int min_n[100005];
int max_n[100005];
bool flag[100005] ={
0};
for(int i=1;i<=n;i++)
cin>>num[i];
int sum = 0;
min_n[0] = num[0] = 0;
max_n[n+1] = num[n+1] = 1000000001;
for(int i =1;i<=n+1;i++)
min_n[i] = max(min_n[i-1],num[i-1]);
for(int i =n;i>=0;i--)
max_n[i] = min(max_n[i+1],num[i+1]);
for(int i =1;i<=n;i++)
if(num[i]>min_n[i] && num[i]<max_n[i]){
sum+=1;flag[i]=1;}
cout<<sum<<endl;
int count = 0;
for(int i =1;i<=n;i++)
{
if(flag[i]==1)
{
count +=1;
if(count==sum)cout<<num[i];
else cout<<num[i]<<" ";
}
}
cout<<endl;
}