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

    #include<iostream>
    #include<vector>
    #include<set>
    #include<cmath>
    using namespace std;
    
    int lChild(int i)
    {
        return 2*i;
    }
    
    int rChild(int i)
    {
        return 2*i + 1;
    }
    
    void swap(int &a, int &b)
    {
        int t = a;
        a = b;
        b = t;
    }
    
    //min-heap
    void sift_down(int a[], int n, int i)
    {
        int min = i;
        int l = lChild(i);
        int r = rChild(i);
    
        if(l<=n && a[l]<a[min])
            min = l;
        
        if(r<=n && a[r]<a[min])
            min = r;
        if(i != min)
        {
            swap(a[i], a[min]);
            sift_down(a,n,min);
        }
    }
    
    void make_heap(int a[], int n)
    {
        int i = 0;
        for(i=1; i<=n/2; i++)
        {
            sift_down(a,n,i);
        }
    }
    
    void heap_sort(int a[], int n)
    {
        make_heap(a,n);
        int size = n;
        int i = 0;
        for(i=n; i>=1; i--)
        {
            swap(a[i],a[1]);
            size--;
            sift_down(a,size,1);
        }
    }
    
    int main()
    {
        int a[100];
        int n;
        while(cin>>n)
        {
            int i = 0;
            for(i=1; i<=n; i++)
                cin>>a[i];
            heap_sort(a,n);
            for(i=1; i<=n; i++)
                cout<<a[i]<<" ";
            cout<<endl;
        }
        return 0;
    }
    多学习,多总结。
  • 相关阅读:
    Mysql
    Java-多线程
    Java-Spring事务
    上传图片的工具类
    Githup随笔
    JsonArray
    Ajax
    maven的三大生命周期
    Apache与Tomcat
    java json字符串转JSONObject和JSONArray以及取值的实例
  • 原文地址:https://www.cnblogs.com/yanhaiming/p/2972402.html
Copyright © 2011-2022 走看看