算法题/寻找第K大数

来源:互联网 发布:java书籍推荐顺序 编辑:程序博客网 时间:2024/06/05 10:16

python3

在N个乱序数字中查找第k大的数字 (最简单的想法,后续改进)
采用快速排序法对输入的数据进行排序,然后输出第k大个数

快速排序法思路:
设置a[0]为基准数
定义一个存放小于基准数的列表low
定义一个存放大于基准书的列表high
定义一个存放基准数的列表median
将数组a中小于基准数的数据放入low,大于基准数的数据放入high,基准数放于median
递归

#coding:utf-8def 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 arra = 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为要求的第二大的数
这里写图片描述

原创粉丝点击