注意,轴枢元素选取第一个元素。

1、伪码

算法分为两部分:
1)分划

算法 Partition(R,m,n. j)
/*对文件R进行分划,起点为m,终点为n。
返回值为轴枢元素的下标*/
i = m.
j = n + 1.
K = Km.

WHILE i < j DO
    {
        i = i + 1.
        WHILE Ki <= K DO i = i + 1.
        j = j - 1.
        WHILE Kj > K DO j = j - 1.
        IF i < j THEN swap(Ri, Rj).
    }
swap(Rm,Rj).
RETURN j.

2)主程序

算法 Qsort(R,m,n.R)
IF m < n THEN
{
    j = Partition(R, m, n. R).
    Qsort(R, m, j-1).
    Qsort(R, j+1,n).
}

最差情况下复杂度 O(N^2)
最好情况下复杂度 O(NlogN)