问题背景:最小值查找,查找指定位置的元素
k为指定位置,q为主元位置,p为数组起始位置,q为数组结束位置,
该问题可参考快速排序快速排序——分治法
查找时分为三种情况:
情况1:k=q-p+1,A[q]为数组第k小元素
情况2:k<q-p+1,A[p…q-1]中寻找第k小元素
情况3:k>q-p+1,在A[q+1…r]中寻找第k-(q-p+1)小元素
当主元固定时:
def Partition(Arr, p, r):
x = Arr[r]
i = p - 1
for j in range(p, r):
if Arr[j] <= x:
Arr[i + 1], Arr[j] = Arr[j], Arr[i + 1]
i += 1
Arr[i + 1], Arr[r] = Ar