• 堆排序


     1 #include <stdio.h>
     2 #include <malloc.h>
     3 
     4 #define LeftChild(i) (2*(i)+1)
     5 
     6 typedef int ElementType;
     7 
     8 void SwapTwoNum(ElementType *Num_1,ElementType *Num_2)
     9 {
    10     int NumTemp = *Num_1;
    11     *Num_1 = *Num_2;
    12     *Num_2 = NumTemp;
    13 }
    14 
    15 void _PercDown(ElementType *Array,int CurrentPosition,int ArrayLen)
    16 {
    17     int Child;
    18     ElementType TmpNum;
    19     
    20     for(TmpNum = Array[CurrentPosition];LeftChild(CurrentPosition) < ArrayLen;CurrentPosition = Child)
    21     {
    22         Child = LeftChild(CurrentPosition);
    23         if(Child != ArrayLen-1 && Array[Child+1] > Array[Child])
    24         {
    25             Child ++;
    26         }
    27         if(TmpNum < Array[Child])
    28         {
    29             Array[CurrentPosition] = Array[Child];
    30         }
    31         else
    32         {
    33              break;
    34         }
    35     }
    36     Array[CurrentPosition] = TmpNum;
    37 }
    38 
    39 void HeapSort(ElementType *Array,int ArrayLen)
    40 {
    41     int i;
    42     //Build Heap
    43     for(i = ArrayLen/2;i >= 0;i --)
    44     {
    45         _PercDown(Array,i,ArrayLen);
    46     }
    47     
    48     //Delete max and put them to the Array end
    49     for(i = ArrayLen-1;i > 0;i --)
    50     {
    51         SwapTwoNum(&Array[0],&Array[i]);
    52         _PercDown(Array,0,i);
    53     }
    54 }
    55 
    56 int main()
    57 {
    58     ElementType TestArray[10] = {718,224,3332,4443,55,31,66,79,90,7};
    59     HeapSort(TestArray,10);
    60     int i;
    61     for(i = 0;i < 10;i ++)
    62     {
    63         printf("%d ",TestArray[i]);
    64     }
    65     printf("
    ");
    66     return 0;
    67 }
  • 相关阅读:
    服务器被黑

    ZXW说
    抽象类
    URL参数加密解密过程
    SqlServer 跨服务器 DML
    发布
    C#操作XML小结
    定时指执程序
    SQL语句判断数据库、表、字段是否存在
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427406.html
Copyright © 2020-2023  润新知