- 博客(2)
- 收藏
- 关注
原创 TopK问题
问题描述:从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。栗子:从arr[1, 12]={5,3,7,1,8,2,9,4,7,2,6,6} 这n=12个数中,找出最大的k=5个。一、排序排序是最容易想到的方法,将n个数排序之后,取出最大的k个,即为所得。时间复杂度:O(n*lg(n))分析:明明只需要TopK,却将全局都排序了,这也是这个方法复杂度非常高的原因。那能不能不全局排序,而只局部排序呢?这就引出了第二个优化方法。二、局部排序不再全局排序,只对最大的k个
2020-08-31 11:00:24 146
原创 大顶堆的构建、排序过程
一、什么是堆堆是一种非线性结构,可以把堆看作一棵二叉树,也可以看作一个数组,即:堆就是利用完全二叉树的结构来维护的一维数组。Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]堆可以分为大顶堆和小顶堆。大顶堆:每个结点的值都大于或等于其左右孩子结点的值。小顶堆:每个结点的值都小于或等于其左右孩子结点的值。如果是排序,求升序用大顶堆,求降序用小顶堆。一
2020-08-31 10:34:05 11715 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人