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