• 小根堆实现的堆排序


    输入:     第一行输入一个整数N,代表要排序元素的个数

               以下N行输入N个要排序的元素

    输出:    从小到大依次输出各元素

    #include<iostream>
    using namespace std ;
    int a[100] ;
    void heap(int s, int n){            //调整堆,使其始终为小根堆
        int i, j = 1, k = a[s], max = 0 ;
        while(j!=max){
            i = a[s] ;
            j = max ;
            if(2*s<=n)
                if(a[s*2]<i){
                    i = a[s*2] ;
                    j = s * 2 ;
                }
            if(s*2+1<=n)
                if(a[s*2+1]<i){
                    i = a[s*2+1] ;
                    j = s*2+1 ;
                }
            if(j!=max){
                a[s] = i ;
                s = j ;
            }
            a[s] = k ;
        }
    }
    int main(){
        int n, i ;
        cin >> n ;
        for(i=1; i<=n; i++)
            cin >> a[i] ;
        for(i=n/2; i>0; i--)        //构建小根堆
            heap(i, n) ;
        for(i=n; i>1; i--){
            cout << a[1] << " " ;
            a[1] = a[i] ;
            n -- ;
            heap(1, n) ;            //调整当前堆
        }
        cout << a[1] << " " ;       //输出最大堆元素
        return 0 ;
    }

  • 相关阅读:
    el-upload文件上传组件
    vue 自定义指令input表单的数据验证
    vue-resourse简单使用方法
    go语言基本运算符
    第4课
    第3课
    第2课
    第1课
    第0课
    第0课
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2143134.html
Copyright © 2020-2023  润新知