QuickSort中PARITION与HOARE-PARITION之分析

最初的parittion版本:
HOARE-PARTITION(A, p, r)
xA[p]
ip - 1
jr + 1
while TRUE
 5      do repeat jj - 1
 6           until A[j] ≤ x
 7         repeat ii + 1
 8           until A[i] ≥ x
 9         if i < j
10            then exchange A[i] ↔ A[j]
11            else return j

 
  
改进后的版本:
 
  

PARTITION(A, p,r)

xA[r]

ip - 1

for jp to r- 1

4       do if A[j] ≤ x

5             then ii +1

6                  exchange A[i] ↔A[j]

7  exchange A[i + 1] ↔ A[r]

return i + 1


改进后有什么变化呢?
1.PARITION只需用一个i指针,x[i]为分割成三个部分。
2.HOARE-PARITION用了两个指针i及j,但未分割成三个区间,而是获得两个区间,X[p...i] <= X[p],X[j...r] >= X[p]。3.左边的部分小于分割主元,而大于j的部分大于分割主元,当while终止时,p<=j<=i=X[p], X[1...j] <= X[p].

你可能感兴趣的:(算法)