zoukankan      html  css  js  c++  java
  • PAT乙级1045-----快速排序 (25分)

    1045 快速排序 (25分)

    输入样例:

    5
    1 3 2 4 5
    
     

    输出样例:

    3
    1 4 5

    思路:
    1.首先找可能主元,将所给数组排序然后对比初始数组,找到主元
    2.对所有可能主元,从左到右遍历一遍初始数组找最大值,将所有可能主元的左侧最大值存储
    3.对所有可能主元,从右到左遍历一遍初始数组找最小值,将所有可能主元的右侧最小值存储
    4.可能主元满足主元元素大于左侧最大值小于右侧最小值,则判定为主元
    5.测试点2输出主元个数为0,但是要输出两个换行,否则会有格式错误(即,输出主元的那行为空,但还要再换一行)

    首次通过代码:
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3    int a[100005];
     4    int b[100005];
     5    int maybe[100005];
     6    int max[100005];
     7    int min[100005];
     8 int cmp(const void *a,const void *b){
     9     return *(int *)a-*(int *)b;
    10 }
    11 
    12 int main(){
    13    int sum;
    14    scanf("%d",&sum);
    15    for(int i=0;i<sum;i++)
    16     {scanf("%d",&a[i]);
    17       b[i]=a[i];
    18     }
    19     qsort(b,sum,sizeof(int),cmp);
    20     int num=0;
    21     for(int i=0;i<sum;i++){
    22         if(a[i]==b[i]) maybe[num++]=a[i];
    23     }
    24     int counter=0;
    25     int max_num=0;int min_num=1e9+1;
    26     for(int i=0;i<sum;i++){
    27         if(a[i]==maybe[counter]){
    28             max[counter++]=max_num;
    29         }
    30         else if(a[i]>max_num) max_num=a[i];
    31     }
    32     counter--;
    33     for(int i=sum-1;i>=0;i--){
    34         if(a[i]==maybe[counter]){
    35             min[counter--]=min_num;
    36         }
    37         else if(a[i]<min_num) min_num=a[i];
    38     }
    39     int num1=0;
    40     for(int i=0;i<num;i++){
    41         if(maybe[i]>max[i]&&maybe[i]<min[i]) num1++;
    42     }
    43     printf("%d
    ",num1);
    44     for(int i=0;i<num;i++){
    45         if(maybe[i]>max[i]&&maybe[i]<min[i]) {
    46             printf("%d",maybe[i]);
    47             num1--;
    48             if(num1>0) printf(" ");
    49         }
    50         
    51     }
    52     printf("
    ");
    53     return 0;
    54 }
    View Code

    参考:

    FROM:https://www.cnblogs.com/Anber82/p/11353212.html

  • 相关阅读:
    mysql自动备份shell
    程序员,架构师有话对你说
    Chief Technology Officer
    读《对软件开发的一点心得体会》有感
    shell编程值之shell流程控制(7)
    shell编程值之正则表达式与字符截取(6)
    shell编程之环境变量配置文件(4)
    shell编程之运算符(3)
    shell编程之BASH变量(2)
    shell编程之SHELL基础(1)
  • 原文地址:https://www.cnblogs.com/a982961222/p/12410917.html
Copyright © 2011-2022 走看看