zoukankan      html  css  js  c++  java
  • 简单的堆排序

    #include <iostream>
    
    using namespace std;
    
    void HeapAdjust(int *A, int s, int m)         //下标以1开始
    {
        int temp_first=A[s];
        for(int j=2*s;j<=m;j*=2)
        {
            if(j+1<=m && A[j]<A[j+1]) ++j;
            if(temp_first>=A[j]) break;
            A[s]=A[j];
            s=j;
        }
        A[s]=temp_first;
    }
    
    void HeapSort(int *A, int len)
    {
        for(int i=len/2;i>=1;--i)
        {
            HeapAdjust(A, i, len);
        }
        int temp_first=A[1];
        A[1]=A[len];
        A[len]=temp_first;
        for(int i=len-1;i>1;--i)
        {
            HeapAdjust(A,1,i);
            temp_first=A[1];
            A[1]=A[i];
            A[i]=temp_first;
        }
    }
    
    int main()
    {
        int A[]={0,2,4,6,2,45,8,5,3,8,4,6,7};
        int len=sizeof(A)/sizeof(A[0])-1;       //第一个元素是哨岗元素
        HeapSort(A,len);
        for(int i=1;i<=len;++i)
        {
            cout<<A[i]<<" ";
        }
        cout<<endl;
        return 0;
    }        
    

      

  • 相关阅读:
    3.22
    练习 3.16
    简单工厂模式
    Java-不可变字符串
    java中的缓冲流
    TCP协议下java通信
    nginx优化
    nginx反向代理
    shell-for循环
    shell-数组
  • 原文地址:https://www.cnblogs.com/ledao/p/3365830.html
Copyright © 2011-2022 走看看