python3
在N个乱序数字中查找第k大的数字 (最简单的想法,后续改进)
采用快速排序法对输入的数据进行排序,然后输出第k大个数
快速排序法思路:
设置a[0]为基准数
定义一个存放小于基准数的列表low
定义一个存放大于基准书的列表high
定义一个存放基准数的列表median
将数组a中小于基准数的数据放入low,大于基准数的数据放入high,基准数放于median
递归
#coding:utf-8
def quickSort(a):
low = []
high = []
median = []
if len(a) <= 1:
return a
else:
#设置一个基准
baseline = a[0]
for i in a:
if i < baseline:
low.append(i)
elif i > baseline:
high.append(i)
else:
median.append(i)
low_arr = quickSort(low)
high_arr = quickSort(high)
arr = low_arr+median+high_arr
return arr
a = input()
data = [int(x) for x in a.split()]
#将最后一个k值弹出
k = data.pop()
print(quickSort(data)[-k])
输入例如
13 -27 26 8 -15 4 2,其中2为要求的第二大的数