通過一趟排序將要排序的資料分成 兩段 ,其中一段的資料均小於另外一段資料,在以此方法對兩段資料相同操作(遞迴)
平均:nlogn
最差情況:o(n^2)
確定分界點 q[i] 可以隨機取,兩個指標,乙個指向頭部,乙個指向尾部
跑一趟後 一側資料全部小於另一側資料
遞迴處理左右兩側資料
#include using namespace std;const
int n = 1e6+10;
intn;
intq[n];
int quick_sort(int q ,int l ,int
r )
quick_sort(q , l , j);
quick_sort(q , j+1, r);
}int
main()
C 之快速排序
演算法描述 1.假定陣列首位元素為 樞軸 設定數列首位 begin 與末位 end 索引 2.由末位索引對應元素與 樞軸 進行比較,如果末位索引對應元素大於 樞軸 元素,對末位索引減一 end 直到比較出大於 樞軸 元素,將該元素覆蓋到首位,對應索引上的數值空出 3.由首位索引對應元素與 樞軸 進行...
快速排序之C 實現
快速排序之c 實現 一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j 找到第乙個小於key的值a j 將a j 和a i 互換 4 從i開始向後搜尋,即由...
C 複習之堆排序 快速排序
堆是具有下列性質的完全二叉樹 每個節點的值都大於或等於其左右孩子節點的值 稱為大頂堆 或者每個節點的值都小於或等於其左右孩子節點的值 稱為小頂堆 堆排序就是利用堆進行排序的方法 基本思想是 將待排序的序列構造成乙個大頂堆 此時 整個序列的最大值就是堆頂的根結點 將它移走 其實就是將其與堆陣列的末尾元...