查找第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])