您的位置:首页 > 职场人生

【剑指offer】面试题30:最小的K个数

2014-07-07 00:37 357 查看
import random

def partition(data, start, end):
if  end <= start:
return start
index = random.randint(start, end)

guard = data[index]

while  True:
while data[start] < guard: start += 1
while data[end] > guard: end -= 1
if start >= end: break
data[start], data[end] = data[end], data[start]

return start

def getKMins(data, k):
if len( data ) <= k: return data
start = 0; end = len( data ) - 1
index = partition(data, start, end)
while index != k - 1:
if index > k - 1:
index = partition(data, start, index - 1)
else:
index = partition(data, index + 1, end)
return data[ 0 : k]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: