在无排序的列表中查找第k个最大元素python语言
时间: 2023-06-04 18:02:52 浏览: 187
求取序列中第K个最大值的python代码
可以使用快速选择算法来查找第k个最大元素。该算法的基本思想是选择一个基准数,将列表分成两个部分,一个部分大于基准数,一个部分小于基准数,然后根据k的位置来确定在哪个部分查找,分而治之。以下是示例代码:
def quickselect(arr, k):
pivot = arr[-1]
left = []
right = []
for i in range(len(arr)-1):
if arr[i] > pivot:
right.append(arr[i])
else:
left.append(arr[i])
if len(right) == k-1:
return pivot
elif len(right) >= k:
return quickselect(right, k)
else:
return quickselect(left, k-len(right)-1)
# 测试代码
arr = [3, 2, 1, 5, 6, 4]
k = 2
print(quickselect(arr, k)) # 输出 5
阅读全文