算法之排序

一 堆排序

1.1 堆概念

(4 封私信) 【算法】排序算法之堆排序 - 知乎

1.1.1 堆的存储

一般用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2;其左右子结点分别为 (2i + 1)、(2i + 2)

1.1.2 最大堆的构建

cpp 复制代码
void buildMaxHeap(vector<int>& nums, int len) {
    for (int i = len / 2; i >= 0; --i) {
        maxHeapify(nums, i, len);
    }
}

功能解析:

  • 作用:将整个数组转换为最大堆。
  • 实现逻辑:
    1. 最后一个非叶子节点开始,向前遍历到根节点(索引 0)。
    2. 对每个节点调用maxHeapify进行堆化。
  • 为什么从len/2开始?
    • 完全二叉树中,索引> len/2的节点都是叶子节点(没有子节点),无需堆化。
    • 最后一个非叶子节点的索引为len/2(整数除法)。
相关推荐
元亓亓亓10 分钟前
LeetCode热题100--763. 划分字母区间--中等
算法·leetcode·职场和发展
鹿角片ljp11 分钟前
力扣206.反转链表-双指针法(推荐)
算法·leetcode·链表
智航GIS18 分钟前
ArcGIS大师之路500技---037普通克里金VS泛克里金
人工智能·算法·arcgis
晨晖225 分钟前
循环队列:出队
算法
LYFlied27 分钟前
【每日算法】LeetCode 70. 爬楼梯:从递归到动态规划的思维演进
算法·leetcode·面试·职场和发展·动态规划
最晚的py31 分钟前
聚类的评估方法
人工智能·算法·机器学习
业精于勤的牙35 分钟前
浅谈:算法中的斐波那契数(五)
算法·leetcode·职场和发展
液态不合群38 分钟前
查找算法详解
java·数据结构·算法
代码游侠39 分钟前
学习笔记——Linux进程间通信(IPC)
linux·运维·笔记·学习·算法
高洁0139 分钟前
DNN案例一步步构建深层神经网络(3)
python·深度学习·算法·机器学习·transformer