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

     1 /*堆排序*/
     2 //根节点元素自顶向下移动到合适的位置以构成最大堆
     3 void downToMaxHeap(vector<int> &arr, int bgn, int end)
     4 {
     5     int child;
     6     int parent = bgn;
     7 
     8     /*假根节点向下移动至合适的位置 --整个堆排序的核心代码块*/
     9     while ((child = parent * 2 + 1) < end)
    10     {
    11         if ((child < end - 1) && (arr[child] < arr[child + 1]))
    12             ++child;    //右孩子节点
    13         if (arr[child] > arr[parent])
    14             mySwap(&arr[child], &arr[parent]);
    15         else
    16             break;
    17         parent = child;
    18     }
    19 }
    20 //将数组构造为最大堆
    21 void buildMaxHeap(vector<int> &arr, int bgn, int end)
    22 {
    23     if (bgn >= end - 1)
    24         return;
    25 
    26     int parent = end / 2 - 1;
    27     while (parent >= 0)
    28     {
    29         downToMaxHeap(arr, parent, end);
    30         --parent;
    31     }
    32 }
    33 //堆排序
    34 void heapSort(vector<int> &arr, int bgn, int end)
    35 {
    36     //构造最大堆
    37     buildMaxHeap(arr, bgn, end);
    38 
    39     while (end > 1)
    40     {
    41         mySwap(&arr[0], &arr[--end]);
    42         downToMaxHeap(arr, 0, end);
    43     }
    44 }
    View Code

    Code-堆排序

    https://blog.csdn.net/u010452388/article/details/81283998

    https://www.cnblogs.com/Glory-D/p/7884525.html

    https://www.cnblogs.com/linjj/p/5260763.html

    https://blog.csdn.net/li1914309758/article/details/81036854

  • 相关阅读:
    架构基础-CAP原理
    Nginx基础
    Nginx基础
    Nginx基础
    Nginx基础
    Nginx基础
    Nginx基础
    Nginx基础
    CentOS 7 架设LNMP动态网站
    Linux下文件描述符
  • 原文地址:https://www.cnblogs.com/ljy08163268/p/11668533.html
Copyright © 2011-2022 走看看