zoukankan      html  css  js  c++  java
  • 1098 insertion or heap sort

    堆排序STL algorithm里有建堆make_heap,出栈 pop_heap(将堆首元素移至容器尾部),入栈push_heap,以及堆排序sort_heap

    AC代码

    #include <vector>
    #include <cstdio>
    #include <string>
    #include <algorithm>
    using namespace std;
    int main(){
        int n;
        vector<int> bv,av;
        scanf("%d",&n);
        for(int i = 0;i < n;i++){
            int tmp;
            scanf("%d",&tmp);
            bv.push_back(tmp);
        }
        for(int i = 0;i < n;i++){
            int tmp;
            scanf("%d",&tmp);
            av.push_back(tmp);
        }
        int i;
        for(i = 0;i < n;i++){
            if(i < n - 1 && av[i] > av[i+1]){
                break;
            }
        }
        i++;
        bool ins(true);
        for(int j = i;j < n;j++){
            if(av[j] != bv[j]){
                ins = false;
                break;
            }
        }
        if(ins){
            printf("Insertion Sort
    ");
            int tmp(av[i]),id;
            for(int j = 0;j < i;j++){
                if(av[j] > tmp){
                    id = j;
                    break;
                }
            }
            for(int j = i;j > id;j--){
                av[j] = av[j-1];
            }
            av[id] = tmp;
            for(int j = 0;j < av.size();j++){
                if(j == 0)
                    printf("%d",av[j]);
                else
                    printf(" %d",av[j]);
            }
        }
        else{
            printf("Heap Sort
    ");
            int h(av[0]);
            int j;
            for(j = av.size() - 1;j >= 0;j--){
                if(av[j] < h)
                    break;
            }
            make_heap(av.begin(),av.begin() + j + 1);
            pop_heap(av.begin(),av.begin() + j + 1);        
            for(int j = 0;j < av.size();j++){
                if(j == 0)
                    printf("%d",av[j]);
                else
                    printf(" %d",av[j]);
            }
        }
        return 0;
    }
  • 相关阅读:
    IDEA添加注释模板
    Docker安装Mysql
    Linux使用
    Linux使用
    Spring Cloud入门 (5)
    在IDEA中将SpringBoot项目打包成jar包
    Linux使用
    Linux使用
    Linux使用- 虚拟机安装 Linux
    Spring Cloud入门 (4)
  • 原文地址:https://www.cnblogs.com/Aldorado/p/5265035.html
Copyright © 2011-2022 走看看