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

    刚写的,还问题,回去看下怎么回事:

    #include <cstdlib>
    #include "stdio.h"
    
    #define LeftChild(Index) (Index)<<1+1
    #define RightChind(Index) (Index)<<1+2
    
    void Adjust(int* aArray,int aIndex, int aLen)
    {
        int lCurIndex = aIndex;
        while(true)
        {
            const int lLeftChild = LeftChild(lCurIndex);
            if (lLeftChild > aLen)
            {
                return;
            }
    
            int lMaxIndex = lLeftChild;
            const int lRigthChild = RightChind(lCurIndex);
            if (lRigthChild < aLen && aArray[lLeftChild] < aArray[lRigthChild])
            {
                lMaxIndex = lRigthChild;
            }
    
            if (aArray[lCurIndex] < aArray[lMaxIndex])
            {
                int lTemp = aArray[lCurIndex];
                aArray[lCurIndex] = aArray[lMaxIndex];
                aArray[lMaxIndex] = lTemp;
    
                lCurIndex = lMaxIndex;
            }
            else
            {
                break;
            }
        }
    }
    
    void PrintArray(int* aArray, int aLen)
    {
        for (int i=0; i < aLen; ++i)
        {
            printf("%d ",aArray[i]);
        }
        printf("
    ");
    }
    
    void Swap(int& a,int& b)
    {
        int temp = a;
        a = b;
        b = temp;
    }
    void HeapSort(int* aArray, int aLen)
    {
        for (int i = aLen/2; i >= 0; --i)
        {
            Adjust(aArray, i , aLen);
        }
    
        for (int i = aLen-1; i >0;--i)
        {
            Swap(aArray[0],aArray[i]);
            Adjust(aArray,1,i-1);
        }
        //PrintArray(aArray,aLen);
    }
    
    int main()
    {
        int lArry[100];
        for (int i = 0; i < 100; ++i)
        {
            lArry[i] = i;
        }
        HeapSort(lArry,sizeof(lArry)/sizeof(int));
        PrintArray(lArry,sizeof(lArry)/sizeof(int));
    }
  • 相关阅读:
    GIL 全局解释器
    线程
    队列 Queue 与 生产者消费模型
    进程 与 并发(进程打开方式,互斥锁)
    【JAVA设计模式】单例模式
    【排序】桶排序
    【排序】选择排序
    【排序】插入排序
    【排序】冒泡排序
    JVM 优化之逃逸分析
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3337447.html
Copyright © 2011-2022 走看看