基礎演算法 快速排序演算法

2021-06-29 01:00:59 字數 488 閱讀 1527

時間複雜度:最壞的情況和氣泡排序一樣,為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...