快速排序法中的index就是这个数在数组中的排序,因此用快速排序即可很容易做到 /
找到了index即代表找到了第index大的数,同时将该数放到了这个位置(数组中的index位置)。
挖坑法、前后指针、左右指针子程序都不变。将分治法改一下即可
def quickArray(ary,left,right):
if left<right:
k=ary[right]
cur=left
pre=cur-1
for cur in range (left,right):
if ary[cur]<k:
pre+=1
if pre!=cur:
ary[pre],ary[cur]=ary[cur],ary[pre]
cur+=1
else:
cur+=1
ary[pre+1],ary[right]=ary[right],ary[pre+1]
print(ary)
return pre+1
def quickSort(ary,left,right,k):
index=quickArray(ary,left,right)#index代表在数组中位置,即将该数放到对应的正确的位置
if (index!=k):#若index=k,则意味着k这个位置已经放好了,数组中第k大的数
if index>k:
quickSort(ary,left,index-1,k)#
else:
quickSort(ary,index+1,right,k)
array=[7,7,4,1,10,6,2,44,44,3,65,8,9,20,15]
k=1
quickSort(array,0,len(array)-1,k)
print(array[k])