数据结构与算法
z80179030z
这个作者很懒,什么都没留下…
展开
-
堆排序(2):topk问题
解决思路: 取列表前k个元素,建立一个小根堆,堆顶就是这k个里面最小的数依次向后遍历原列表,对于列表中的元素,如果小于堆顶,则忽略该元素;如果大于堆顶,这表示现在堆顶的元素肯定不是前k大的,直接扔掉,将堆顶更换为新元素,并重新建堆遍历整个列表结束后,这个小根堆里的数就是前n大的数,此时倒序弹出堆顶即可1、建小根堆(只需把前面代码中的两个>号换成<号即可)...原创 2021-11-10 22:41:27 · 91 阅读 · 0 评论 -
数据结构:堆排序(一)
大根堆:父节点值 大于 子节点小根堆:父节点值 小于 子节点1、堆排序的第一步是建堆,即把某个无序的二叉树构建成堆,这里以大根堆为例。建堆的思路:从堆顶的元素开始遍历,依次与其左右子节点中较大的比较 1)若父节点更大,保留父节点位置,开始遍历子节点树杈 2)若子节点更大,交换父子节点的位置,开始遍历子节点树杈 依次遍历,直至遍历至最后一个节点,具体到代...原创 2021-11-10 22:35:24 · 533 阅读 · 0 评论