時間複雜度:最壞的情況和氣泡排序一樣,為o(n^2)
平均的時間複雜度:nlog(n)
基本思想:
1、取最左邊的數作為標準
2、從右邊開始查詢,找到從右邊數第乙個小於標準temp的數
3、從左邊繼續查詢,找到第乙個大於標準temp的數
4、將左右兩邊找到的數進行交換,如此往復,直到左邊和右邊碰到一起,即i==j
5、將標準值和i所對應的值進行交換,這樣就使得左邊的數全部小於標準值,右邊的數全部大於標準值。
6、左邊和右邊重複此動作。
**:
int quicksort(int start, int
end)
}num[start]=num[left];
num[left]=temp;
quiksort(start,left-1);
quiksort(left+1,end);
}
演算法基礎 快速排序
要求 10分鐘內寫出快排!之前筆試用到排序演算法,總是想用快排但是又不能在規定時間寫出來,歸根到底還是快排的邏輯步驟沒有搞清,所以才導致每次失敗!徹底搞清快排動作邏輯,這樣即使長時間不用也能臨時寫出來!思路 1.就像選擇排序每排一次序排好最小 大值一樣,快速排序每排一次序 會 將中軸值 預設取陣列第...
快速排序演算法 基礎
快速排序的演算法的核心思想是設定乙個值,把比這個值大的往右 扔 比這個值小的往左 扔 陣列快速排序的過程 設定兩個變數i j,排序開始時 i 0,j n 1 n為排序總數 以陣列中的第乙個元素作為比較的值,賦給變數key,即key a 0 首先從j往前搜尋,即從後往前 j 找到第乙個小於key的值a...
演算法基礎 快速排序
分治法 選擇分界點 arr l arr mid arr r 調整陣列區間 左半部分 分界點,右半部分 分界點 遞迴處理左半部分,遞迴處理右半部分 3.遞迴處理 quicksort arr,j 1,r intmain 的驗證 1.第k小的數 題目鏈結 include include using nam...