讓程式設計改變世界
change the world by program
我們學習過的排序演算法,有依照實現方法分類命名的,比如簡單選擇排序、直接插入排序、歸併排序,有按照其排序的方式模擬現實世界命名的,比如氣泡排序、堆排序,還有用人名命名的,比如希爾排序。
但是,我們上節課給大家介紹了乙個吊炸天的排序演算法,他被命名為快速排序,按理論來說,如果他的效率在實測中被其他排序演算法所超越,那麼他就名不其實了!
不過,至少在今天,快速排序經過各種優化後,在整體效能上,依然是排序演算法的王者,我們應該要好好研究並掌握它。這節課我們就來談談快速排序演算法的幾種優化方案:
資料結構(9 快速排序
思路 對於陣列 54,26,93,17,77,31,44,55,20 先制定乙個基準 a 0 54 這裡基準一般取第乙個值 設定兩個指標 low 1 high n 1 需要對所有數進行遍歷 要求 low從左向右遍歷,low指向的數都比a 0 小,high從右向左遍歷,high指向的值都比a 0 大 ...
資料結構和演算法 快速排序
include int a 101 n void quick sort int left,int right int i,j,t,temp if left right return temp a left i left j right 在哨兵i,j 會合之前,將右側找到的小數與左邊找到的大數 互換 ...
資料結構定義和演算法 排序 快速排序
如果要排序下標為p到r之間的一組陣列 選擇p到r之間任意乙個元素做pivot 分割槽點 將小於pivot的元素放在左邊,大於pivot的放在右邊,pivot放在中間。這樣陣列就被分為三個部分,小於pivot的區間a p,q 1 等於pivot的區間a q 大於pivot的區間a q 1,r 根據分治...