六,快速排序

2022-07-02 01:42:07 字數 1087 閱讀 6045

快速排序,顧名思義,排序速度很快,也是面試常常被問到的排序演算法之一。

快速排序關鍵在於乙個軸,讓其他的數字和這個軸的值相比較,如果小於等於這個軸把數字放到軸的左邊,否則放到右邊。這樣你會發現,這個軸現在在的位置就是他應該在的位置了。

那麼第一次迴圈後就變成這個樣子,然後分別指定兩邊的陣列的軸,分別對兩個陣列進行同樣的步驟即可。其實從某種角度來講,他和選擇排序類似,選擇排序是選擇乙個數字比較找到最小的值往前放,而快速排序是指定乙個數字,找到他的位置。來看**怎麼實現吧

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...