二分找第K大数
提交数: 690, 通过率: 43.62%, 平均分: 56.14
题目描述:
数组a ( a[1]~a[n],n≥1 ) 中的数据,为无序的整数,为了在数组a中查找第k大(1≤k≤n)的整数,小李借鉴对分查找的思想,编写的 python 程序段如下:
输入格式:
第一行,一个数n。
第二行,n个数,以一个逗号分隔每个数。
第三行,一个数中k。
输出格式:
一个表示第K大的数。
数据范围:
n<=100,000
a数组中的每个数小于10000
样例输入:
9 12,4,67,23,90,6,7,11,12 4
样例输出:
12
提示:
请完善下面的程序(改成题目样例输入要求的输入):
a = [12,4,67,23,90,6,7,11,12]
n = len(a)
k = int( input() )
low=a[0] ; high=a[0]
for i in range( 1,n):
if a[i] < low : low = a[i]
if a[i] > high: high = a[i]
while low < high:
m=(low+high) // 2
cnt = 0
for i in range( n ):
if a[i] > m : cnt += 1
if cnt >= k:
__________(1)___________ #填空1
else :
__________(2)___________ #填空2
print( high )
时间限制: 1000ms空间限制: 256MB
来源: 原创