寻找最小的k个数
题目描述:5.查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。
题目描述:5.查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
思路来自结构之法http://blog.csdn.net/v_july_v/article/details/6370650
方法一:
建K个元素的最大堆,Xmax为堆顶元素,然后遍历余下的n-k个元素,如果大于Xmax,与其交换,更新堆。所以时间复杂度为O(n*logk)
#!/usr/bin/env python
# -*- coding: utf-8 -*
#查找最小的k个树
def heapAdjust(A, i, length):
pa = i
child = 2*i + 1
tmp = A[i]
while child < length:
if child < length-1 and A[child] < A[child+1]:
child += 1
if A[pa] >= A[child]:
break
else:
A[pa],A[child] = A[child],A[pa]
pa = child
child = 2*pa + 1
def findKmin(A, k, length):
for i in range(k