首页 > 其他 > 详细

1101 Quick Sort(二刷)

时间:2020-03-27 14:12:22      阅读:65      评论:0      收藏:0      [点我收藏+]

英文题目:1101 Quick Sort

中文题目:1045 快速排序 

主元判断方法:如果一个元素大于等于其左边所有元素的最大值,小于等于其右边所有元素的最小值,那么这个元素可能是主元。

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4  
 5 const int INF = 0x3fffffff;
 6 //当前位置的元素必须满足,大于等于左边的最大元素,小于等于右边的最小元素,才可能是主元
 7 int a[100010] = {0};
 8 int leftMAX[100010] = {0};
 9 int rightMIN[100010] = {0};
10 int ans[100010] = {0},num = 0;
11 int main() {
12     int n,cnt = 0;
13     scanf("%d",&n);
14     for(int i = 1; i <= n; ++i)
15         scanf("%d",&a[i]);
16     rightMIN[n+1] = INF;
17     for(int i = 1; i <=n; ++i)
18         leftMAX[i] = max(leftMAX[i-1],a[i]);
19     for(int i = n; i>=1; --i)
20         rightMIN[i] = min(rightMIN[i+1],a[i]);
21     for(int i = 1; i <= n; ++i) {
22         if(a[i] >= leftMAX[i] && a[i] <= rightMIN[i]) {
23             cnt++;
24             ans[num++] = a[i];
25         }
26     }
27     printf("%d\n",cnt);
28     for(int i = 0; i < num; ++i) {
29         if(i > 0) printf(" ");
30         printf("%d",ans[i]);
31     }
32     printf("\n");//不加这句,测试点2无法通过
33     return 0;
34 }

技术分享图片

 

1101 Quick Sort(二刷)

原文:https://www.cnblogs.com/keep23456/p/12580728.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!