数据结构
文章平均质量分 79
LM10LM10
这个作者很懒,什么都没留下…
展开
-
堆排序以及应用
堆的定义 堆是一颗完全二叉树,但不是一颗二叉排序树,堆只要求父节点是最大节点(大顶堆)或者是最小节点(小顶堆),并不对左右孩子的大小做要求。 堆为什么能用来排序 以大顶堆为例子,每一次都对二叉树构建一个大顶堆,那么根节点一定是所有节点的最大值,把根节点输出(一般是将根节点和最后一个节点交换)。此时剩下的节点不再符合大顶堆的定义,需要再做调整,当再一次满足大顶堆的时候,继续输出原数组中的第二大元素。直到所有的元素都输出,原先无序的数组就能按从大到小排序起来。 图解大顶堆 以一颗完全二叉树为例,构建一原创 2022-05-06 06:42:22 · 705 阅读 · 0 评论 -
图解基数排序,Java,C++代码
通俗理解 基数排序通俗点讲,就是先把所有待排序的元素按照个位数,十位数,百位数,…划分下去,先按照各个元素的个位数大小,对所有元素进行排序。基数排序是稳定的,也就是说要是同一位数上的数字相同,原先相对位置靠前的元素排位依旧相对靠前。当个位数排序结束后,再按照同样的方法依据更高位数字对元素进行排序,位数不足可看做补0。==排序趟数等于最大元素的位数。==所有位数都排序结束,得到的结果就是最终结果。 图码结合解释基数排序 十进制数基数排序可以理解为10个桶,用来表示10个基数 以数组nums = *原创 2022-04-30 04:18:59 · 263 阅读 · 0 评论