查找第K大的元素

题目描述
给定一个无序的整型数组A[n],数组大小大于等于3,允许有值相同的元素;请设计算法找到该数组排序后第三大的元素值并输出.
输入描述:
一个非空的整数数组(至少有3个元素,可正可负)
输出描述:
第三大的元素值
示例1
输入
[1,2,3,4,5]
输出
3
示例2
输入
[1,1,2,2,3]
输出
2
示例3
输入
[6,5,4,4,1,2]
输出
4

参考:
思路:快排

#划分分区
def partition(nums):
    pivot = nums[0]                                    #挑选枢纽
    hi = [x for x in nums[1:] if x >= pivot]    #所有大于pivot的元素
    lo = [x for x in nums[1:] if x < pivot]     #所有小于pivot的元素
    return hi,pivot,lo

#快速排序
def quick_sort(nums):
    #边界条件
    if len(nums) <= 1:
        return nums

    #分解
    hi,pivot,lo = partition(nums)
    return quick_sort(hi) + [pivot] + quick_sort(lo)

if __name__ == '__main__':
    a=input()
    num = list(map(int, a[1:-1].split(',')))
    res = quick_sort(num)
    print(res[2])

猜你喜欢

转载自www.cnblogs.com/ai-learning-blogs/p/13388158.html