首页 > 编程语言 >十大排序算法之【堆排序】

十大排序算法之【堆排序】

时间:2022-08-15 15:01:35浏览次数:56  
标签:结点 bottom int top 堆排序 算法 largest 排序

堆排序代码:


//头文件省略

void heapify(vector<int>& in, int bottom, int top)
{
  int largest = top;
  int lson = top*2 + 1;
  int rson = top*2 + 1;

  if(lson < bottom && in[largest] < in[lson])
  {
    largest = lson;
  }
  if(rson < bottom && in[largest] < in[rson])
  {
    largest = rson;
  }
  if(largest != top)
  {
    swap(in[largest],in[top]);
    heapify(in,bottom,largest);
  }
};

void heap_sort(vector<int>& in,int bottom)
{
  for(int i = bottom/2;i>=0;i--)
  {
    heapify(in,bottom,i);
  }
  
  for(int i = bottom - 1;i>0;i--)
  {
    swap(in[i],in[0]);
    heapify(in,i,0);
  }
};

int main()
{

return 0;
}

维护最大堆(大根堆)

判断结点的左右子结点,寻找最大值,使结点上浮
然后递归往修改了的子结点方向深处走,直到叶子结点(叶子结点是利用数组的存储方式判定的)

堆排序

将最大值放到数组的最后面然后重新从堆顶维护整个大根堆

标签:结点,bottom,int,top,堆排序,算法,largest,排序
From: https://www.cnblogs.com/black-worrior-2000/p/16588192.html

相关文章

  • 经典算法之快排
    快排的复杂度快排逻辑快速排序算法通过多次比较和交换来实现排序,其排序流程如下:首先设定一个分界值(基准值),通过该分界值将数组分成左右两部分。将大于或等于分界值......
  • SHA256加密算法
    https://www.cnblogs.com/zhangwuxuan/p/12863273.html算法介绍:比特币挖矿的御用算法SHA256是SHA-2下细分出的一种算法SHA-2,名称来自于安全散列算法2(英语:SecureHashA......
  • 一文带你弄懂 JVM 三色标记算法!
    大家好,我是树哥。最近和一个朋友聊天,他问了我JVM的三色标记算法。我脑袋一愣发现竟然完全不知道!于是我带着疑问去网上看了几天的资料,终于搞清楚啥事三色标记算法,它是用......
  • LeetCode912 排序数组(手撕快排)
    LeetCode912排序数组classSolution:defsortArray(self,nums:List[int])->List[int]:importrandomdefpartition(l:int,r:int......
  • C++ 特殊矩阵的压缩存储算法
    1.前言什么是特殊矩阵?C++,一般使用二维数组存储矩阵数据。在实际存储时,会发现矩阵中有许多值相同的数据或有许多零数据,且分布呈现出一定的规律,称这类型的矩阵为特殊矩阵......
  • LeetCode/最多能完成排序的块
    1.最多能完成排序的块I给定一个长度为n的整数数组arr,它表示在[0,n-1]范围内的整数的排列。我们将arr分割成若干块(即分区),并对每个块单独排序。将它们连接......
  • 【Java】List排序方法(包括对象、Map等内部排序实现)
    前言日常开发中经常会对List集合做排序操作,JDK为我们提供了强大的排序方法,可以针对对象、Map、基本类型等进行正/倒排序操作。参考博客:JAVA列表排序方法sort和reversed......
  • 算法学习之路 离散化
    //离散化值得就是一一对应的关系,通常处理大数据范围中的小范围数据;离散化的中的两个步骤:1.a[]中可能的重复元素(去重)2.如何算出x离散化之后的值(二分)/*离散化模板......
  • (未完)【算法学习笔记】04 最近公共祖先LCA
    【算法学习笔记】04最近公共祖先LCA原理顾名思义,就是求两点的最近公共祖先(自己也是自己的祖先)。也就是两点在走到根节点的路径上最先遇到的共同的点。向上标记法比较......
  • 详解二分查找算法 && leetcode35. 搜索插入位置
    https://blog.csdn.net/weixin_39126199/article/details/118785065 https://leetcode.cn/problems/search-insert-position/classSolution{public:intsearc......