当前位置:   article > 正文

C语言堆排序_堆排序c语言

堆排序c语言

堆排序原理:       
堆的结构类似于完全二叉树,头节点位于整个结构的最上方,每个父节点从左到右依次分岔,延申出两个子节点。
每层节点从左到右在数据中是依次排列的关系。
堆中某个结点的值总是不大于其父结点的值(大顶堆:头节点值最大)。

堆中某个结点的值总是不小于其父结点的值(小顶堆:头节点值最小)。

堆排序的基本思想是:1、将带排序的序列构造成一个大顶堆,根据大顶堆的性质,当前堆的根节点(堆顶)就是序列中最大的元素;2、将堆顶元素和最后一个元素交换,然后将剩下的节点重新构造成一个大顶堆;3、重复步骤2,如此反复,从第一次构建大顶堆开始,每一次构建,我们都能获得一个序列的最大值,然后把它放到大顶堆的尾部。最后,就得到一个有序的序列了。
 

  1. #include <stdio.h>
  2. #define size 10
  3. void Swap(int *num, int i, int j)
  4. {
  5. int temp;
  6. temp = num[i];
  7. num[i] = num[j];
  8. num[j] = temp;
  9. }
  10. // 最大堆调整
  11. void Heapify(int *num, int len, int k)
  12. {
  13. if (k < len)
  14. {
  15. int root = k; // 根结点
  16. int lchild = 2*k + 1; // 左孩子结点
  17. int rchild = 2*k + 2; // 右孩子结点
  18. // 查找左右孩
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/697421
推荐阅读
相关标签
  

闽ICP备14008679号