老規矩–妹妹鎮樓:
用two pointers的方法解決,設定兩個指標,分別指向序列a的首尾。
令兩個下標指向首尾,即left指向a[1],right指向a[n],並將a[1]存至temp中。
從序列末端開始,只要a[right]大於temp,則將right不斷左移,當a[right]<= temp時,就將a[right]移到a[left]處。
接著是序列首端,只要a[left]<=temp,則將left不斷右移,當a[left] > temp時,將a[left[移到a[right]處。
重複2, 3,直到left和right相遇,將temp放到相遇的地方。
//對區間進行快速排序
intpartition
(int a,
int left,
int right)
//當left和right碰上時,將temp放到該處
a[left]
= temp;
return left;
//返回最後的下標
}//快速排序
void
quicksort
(int a,
int left,
int right)
}
演算法導論學習筆記(七) 快速排序
快速排序是乙個使用分治思想的排序演算法,具有如下優點 1.演算法的期望執行時間為 nlgn 且其中蘊含的常數因子較小,故而快速排序演算法通常是實際應用中最好的選擇。2.原址排序,排序過程中只需要有限個輔助空間。快速排序通過分治的演算法設計思想,借助關鍵子過程partition將輸入 這裡假定演算法的...
演算法 排序演算法之快速排序
很受打擊啊啊啊啊啊!這道排序題我很久之前就做過,而且當時沒用20分鐘就搞定了,可是,今天在公司做完手上的活之後打算刷題時,又心血來潮的想重做一遍,心想反正也花不了多少時間,結果。血崩了。要求 對於乙個int陣列,請編寫乙個快速排序演算法,對陣列元素排序。給定乙個int陣列a及陣列的大小n,請返回排序...
演算法 排序演算法之快速排序
快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 nlogn 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 nlogn 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實現出來。快速排序...