topk:数组中的k项最大值//二维数组中的k项最大值
从n个数字中找出前top-k大的数字是常见的面试题,有如下几种解法:
个人主页:http://redtongue.cn or https://redtongue.github.io/
暴力解法
这个基本思路类似于冒泡排序或者插入排序,以此遍历找到最大的数,最后返回k个最大的数,时间复杂度为 O ( N K ) O(NK) O(NK)
形如:
def getTopk(li,k):
for i in range(k):
start=0
for j in range(start+1,len(li)):
if(li[start]<li[j]):
li[start],li[j]=li[j],li[start]
start+=1
return li[:start]
暴力解法不可取,基本就是跪了
快排解法
快排的平均时间复杂度为 O ( N l o g N ) O(NlogN) O(N