请补充以下算法,使其完成:给定整数列表 nums 和整数 k,输出数组中第 k 个最大的元素的功能。
输入两行:第一行是列表nums,元素以空格分隔; 第二行为k
输出一行,为列表中的第k个最大的元素
示例如下
def find_k(lst,k):
tmp = lst[0] #取列表第一个元素为tmp
left_lst = [] #左中右,分别存放小于tmp、等于tmp、大于tmp的元素
mid_lst = []
right_lst = []
for i in range(len(lst)): #遍历列表将元素放在对应的列表中
if lst[i]tmp:
right_lst.append(lst[i])
else:
mid_lst.append(lst[i])
#########################
#请根据k和len(left_lst),len(mid_lst),len(right_lst)之间的关系完成以下代码
if len(right_lst) >= k:
return find_k(right_lst,k)
elif:
else:
#########################
def c2i(lst):
for i in range(len(lst)):
lst[i] = int(lst[i])
lst = input().split()
k = int(input())
res = find_k(lst,k)
print(f"第{k}大的元素是{res}")
下面是提供的代码的补充部分,望采纳:
# 请根据k和len(left_lst),len(mid_lst),len(right_lst)之间的关系完成以下代码
if len(right_lst) >= k:
return find_k(right_lst,k)
elif len(right_lst) + len(mid_lst) >= k:
return tmp
else:
return find_k(left_lst,k-len(right_lst)-len(mid_lst))