【1】单向扫描

PARTITION(A, p, r)
x ← A[r] //以最后一个元素,A[r]为主元
i ← p - 1
for j ← p to r - 1 //注,j从p指向的是r-1,不是r。
do if A[j] < x
then i ← i + 1
exchange A[i] <-> A[j]
exchange A[i + 1] <-> A[r]
return i + 1
【2】双向替换(右小左大直接交换)
PARTITION(A, p, r)
x ← A[p]
i ← p - 1
j ← r + 1
while TRUE
do repeat j ← j - 1 //找小
until A[j] < x
do repeat i ← i + 1 //找大
until A[i] > x
if i < j
then exchange A[i] <-> A[j]
else return j
【3】双向补缺(左右轮流补空:首为轴,小补左,大补右)
本文深入探讨了单向扫描和双向扫描两种经典排序算法的实现细节与工作原理,详细解析了每一步操作背后的逻辑,并通过代码示例展示了如何在实际场景中应用这些算法。
18万+

被折叠的 条评论
为什么被折叠?



