zoukankan      html  css  js  c++  java
  • 1098 Insertion or Heap Sort (25 分)(堆)

    这里的第二序列相当于是排序还没拍好的序列

    对于第二个样例的第二个序列其实已经是大顶堆了 然后才进行的堆排序 知道这个就好做了

    #include<bits/stdc++.h>
    
    using namespace std;
    vector<int>a,b;
    int n;
    void downAdjust(int low,int high)
    {
        int i=low;
        int j=i*2;
        while(j<=high){
            if(j+1<=high&&b[j]<b[j+1]){
                j=j+1;
            }
            if(b[j]>b[i]){
                swap(b[j],b[i]);
                i=j;
                j=i*2;
            }
            else break;
        }
    }
    int main()
    {
        scanf("%d",&n);
        a.resize(n+1);
        b.resize(n+1);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        for(int i=1;i<=n;i++) scanf("%d",&b[i]);
        int flag=2;
        while(flag<=n&&b[flag]>=b[flag-1]) flag++;
        int index=flag;
        while(flag<=n&&a[flag]==b[flag]) flag++;
        if(flag==n+1){
            printf("Insertion Sort
    ");
            sort(b.begin()+1,b.begin()+1+index);
            for(int i=1;i<=n;i++){
                if(i!=1) printf(" ");
                printf("%d",b[i]);
            }
        }
        else{
            printf("Heap Sort
    ");
            int f=n;
            while(f>1&&b[f-1]<=b[f]){
                f--;
            }
    
            swap(b[1],b[f]);
            downAdjust(1,f-1);
            for(int i=1;i<=n;i++){
                if(i!=1) printf(" ");
                printf("%d",b[i]);
            }
        }
        return 0;
    }
  • 相关阅读:
    Objective-C 复合
    useContext的使用
    context的使用
    redux使用(二)
    redux使用(一)
    React class & function component 的区别
    combineReducers使用
    gnvm使用(未使用成功)
    React相关知识点
    eslint简单使用&&eslint与webpack结合使用
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10104697.html
Copyright © 2011-2022 走看看