每次判断第K小的数在左右两个数列的哪段,然后针对该段递归排序
N, K = map(int, input().split())
sequence = list(map(int, input().split()))
def quick_sort(my_list, left, right, k):
if left < right:
i = left - 1
j = right + 1
mid = my_list[i + j >> 1]
while i < j:
while 1:
i += 1
if my_list[i] >= mid:
break
while 1:
j -= 1
if my_list[j] <= mid:
break
if i < j:
my_list[i], my_list[j] = my_list[j], my_list[i]
length_left = j - left + 1
if k > length_left:
k -= length_left
quick_sort(my_list, j + 1, right, k)
else:
quick_sort(my_list, left, j, k)
quick_sort(sequence, 0, N - 1, K)
print(sequence[K - 1])