找出一个列表中前k大的数
TOP_K问题
问题简介
找出一个列表中前k大的数
三种解决方案
排序后切片,时间复杂度O(nlogn+k)
简单排序:冒泡排序为例,时间复杂度O(kn)
小根堆,时间复杂度【建堆klogk + (n-k)logk = nlogk】
时间复杂度比较
1 | # -*- encoding: utf-8 -*- |
== 计算时间的装饰器函数 ==
1 | # -*- encoding: utf-8 -*- |
堆
构造堆以及堆排序
1 | # -*- encoding: utf-8 -*- |