# -*- coding: UTF-8 -*-
lst = []
temp = input()
def swap(num,i,j):
k = num[i]
num[i] = num[j]
num[j] = k
return num
def partition(nums , left,right):
if left>right:
return 0
pivotkey = nums[left]
while(left<right):
while(left<right and nums[right] <= pivotkey):
right -=1
#swap(nums[left],nums[right])
nums = swap(nums,left,right)
print('num=',nums)
while(left<right and nums[left] >= pivotkey):
left +=1
nums = swap(nums,left,right)
return left
def find(nums,k):
n = len(nums)
if (k<1 or k >n):
return -1
left = 0
right = n-1
while True:
print('left=',left)
pos = partition(nums,left,right)
if pos+1 == k :return nums[pos]
elif (pos+1 >k):right = pos-1
else: left = pos+1
if temp != '':
lst.append([int(i) for i in temp.split(' ')])
lst1 = lst[0]
print('lst=',lst1)
k = input()
print('k=',k)
find_num = find(lst1,int(k))
print('find_num=',find_num)
else:
print('There is no list')
python版本3.5
结果如图:
键盘输入4 3 5 2 6 1,k=2,寻找第二大的数,find_name为最终输出结果。