排序
fairy净
这个作者很懒,什么都没留下…
展开
-
topk问题
1. 排序 全局排序时间复杂度O(nlog(n))2. 局部排序:冒泡排序 保证了前k个最大数是有序的 时间复杂度O(n*k)3. 可以不关心前k个数是否有序 堆排 时间复杂度 O(nlog(k)) 堆是经典的求topk的算法4. 随机选择,基于快速排序,快速排序的核心是:i = partition(arr, low, high),其中i返回的是(初始化元素t = arr[0])的位...原创 2018-10-02 11:29:29 · 199 阅读 · 0 评论 -
快速排序非递归实现--python
主要思想是:每次把待排序数组分为两部分,左边小于轴右边大于轴,把分开的数组的收尾数组的索引存到辅助栈空间里,替换递归。两种思路:思路一:严老师数据结构里面的思路def partition(nums,low,high): high_flag = True low_flag = False pivot = nums[low] w...原创 2018-06-01 14:11:37 · 4270 阅读 · 0 评论 -
leetcode 179 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。解题思路:和普通的排序不一样的是,不是比较数或者字符串的大小,而是比较拼接后字符串的大小。python3实现:from ...原创 2018-05-27 19:07:58 · 1095 阅读 · 0 评论 -
排序---堆排序的非递归实现
堆排序需要解决两个问题:1.如何由一个无序序列建成一个堆 2.如何在输出堆顶元素后调整剩余元素成为一个新的堆。其实两个问题就是一个问题,就是如何调整剩余元素成为一个新的堆。筛选:筛选是从第n/2向下取整个元素开始的,如果看成是完全二叉树,那么肯定是第n/2向下取整的非终端结点。堆排序:一个无序序列建堆的过程就是一个反复筛选的过程。 def heapsort(data): ...原创 2018-06-05 14:41:59 · 435 阅读 · 0 评论