快速排序(基于分治策略)
发布时间
阅读量:
阅读量
问题描述
import numpy as np
def partition(l, p, r): # 以最后一个元素A[r]为基准,将数组A[p...r]划分为三段A[p...q-1], A[q], A[q+1...r],并满足三段升序排列。划分结束后,原A[r]就放在划分后q的位置。
x = l[r]
i = p - 1
for j in range(p, r):
if l[j] <= x:
i = i + 1
l[i], l[j] = l[j], l[i]
l[i + 1], l[r] = l[r], l[i + 1]
return i + 1
def quicksort(l, p, r):
if p < r:
q = partition(l, p, r)
print("%d %d" % (l[q], q)) # 输出中间结果
quicksort(l, p, q - 1)
quicksort(l, q + 1, r) # 刚开始写成QuickSort(L, q, r) WA
else:
return
全部评论 (0)
还没有任何评论哟~
