快速排序:基于分治策略的 另一種排序算法。
總體思想:把一組數據,從中間分成兩半;左邊一半,從左往右,依次把小數移到左端;右邊一半,從右往左,依次把大數移到右端。
1、編碼步驟:
分解、遞歸求解、合并。
分解:以 數組 a[ p ] 為基準元素將 a[ p,r ] 劃分成三段,a[ p,q-1 ],a[ q ],a[ q+1,r ];此三段元素滿足【小】<【中】<【大】。(即將數組a分為3個子集)
遞歸求解:通過遞歸調用快速排序算法,分別對上面三段進行排序。
合并:由于 a[ p,q-1 ] 和 a[ q+1,r ] 的排序是就地進行的,所以在子集合排好序后,數組a的數據即已排好。