快速排序,顧名思義,排序速度很快,也是面試常常被問到的排序演算法之一。
快速排序關鍵在於乙個軸,讓其他的數字和這個軸的值相比較,如果小於等於這個軸把數字放到軸的左邊,否則放到右邊。這樣你會發現,這個軸現在在的位置就是他應該在的位置了。
那麼第一次迴圈後就變成這個樣子,然後分別指定兩邊的陣列的軸,分別對兩個陣列進行同樣的步驟即可。其實從某種角度來講,他和選擇排序類似,選擇排序是選擇乙個數字比較找到最小的值往前放,而快速排序是指定乙個數字,找到他的位置。來看**怎麼實現吧
package上邊的**是以有邊界作為軸,當然軸的位置是你自己定的,不一定非得是右邊界。test;
/***
* *
@author
zy 劉會發
* @version
1.0 *
@since
2020/4/16 */
public
class
quicksort ;
sort(arr, 0, arr.length - 1);
print(arr);
}public
static
void sort(int arr, int leftbound, int
rightbound)
public
static
int compare(int arr, int leftbound, int
rightbound)
//然後把軸和左指標位置交換
swap(arr, rightbound, left);
//這個時候,左指標指的位置就是軸的位置,將他返回。
return
left;
}public
static
void swap(int arr, int on, int
off)
public
static
void print(int
arr) }}
Java排序 六 快速排序
先從數列中取出乙個數作為基準數。分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它 的左邊。再對左右區間重複第二步,直到各區間只有乙個數。public class quicksort public static void sort int nums,int left,int rig...
演算法排序(六) 快速排序法
快速排序法一般來說可以分為三種,分別是 基礎快速排序法 雙路快速排序法 三路快速排序法 下面分別對以上三種快排進行梳理。排序思路 首先傳入待排序陣列,使用變數l表示陣列下標起點,使用變數r表示陣列下標終點,然後取陣列第乙個元素e做中介,使用迴圈逐步將陣列元素分為比e小和不比e小的兩部分 使用變數j記...
排序演算法 六 快速排序(交換排序)
直接排序屬於交換排序 基本思想 1 選1個基準元素 通常是第乙個元素或最後乙個元素 將待排數列分成兩部分,一部分比基準元素小,一部分比基準元素大 2 再對這兩部分數列重複步驟1 時間複雜度 最好情況 o n logn 最壞情況,退化為氣泡排序 o n n 穩定性 不穩定 python 實現 quic...