zoukankan      html  css  js  c++  java
  • 堆排序

    #include <iostream>
    using namespace std;
    int a[1005];
    bool com1(int a,int b)
    {
        return a > b;
    }
    bool com2(int a,int b)
    {
        return a < b;
    }
    void adjust(int a[],int root,int length,bool com(int x,int y))
    {
        int tem = a[root];
        int child = 2*root;
        while (child <= length)
        {
            if (child<length && com(a[child],a[child+1])) child++;
            if (com(a[child],tem)) break;
            else{
                a[root] = a[child];
                root = child;
                child*=2;
            }
        }
        a[root] = tem;
    }
    void heapsort(int a[],int n,bool com(int x,int y))
    {
        for (int i = n/2 ;i>=1; i--)
           adjust(a,i,n,com);
        for (int i = n-1; i>=1 ; i--)
        {
            swap(a[1],a[i+1]);
            adjust(a,1,i,com);
        }
    }
    void print(int a[],int n)
    {
        for (int i = 1; i<=n;i++)
            cout <<a[i]<<" ";
        cout <<endl;
    }
    int main()
    {
        int n;
        cin >> n;
        for (int i = 1; i<=n;i++)
        {
            cin >> a[i];
        }
        heapsort(a,n,com1);
        print(a,n);
        heapsort(a,n,com2);
        print(a,n);
    }
  • 相关阅读:
    邻接表(spfa模版)
    翻咸鱼(???)
    求逆序数
    Symmetry CSU
    Highways
    LightOJ
    G
    最长的斜坡。。。。
    快速幂取模
    二分
  • 原文地址:https://www.cnblogs.com/HITLJR/p/6226013.html
Copyright © 2011-2022 走看看