Java排序 六 快速排序

2021-09-13 03:14:05 字數 638 閱讀 4036

先從數列中取出乙個數作為基準數。

分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它

的左邊。

再對左右區間重複第二步,直到各區間只有乙個數。

public

class

quicksort

public

static

void

sort

(int

nums,

int left,

int right)

nums[i]

= x;

//將基準填入到最後一次挖的坑中,此時所有坑都被填滿,且基準左邊所有數小於等於基準,右邊所有數大於等於基準

sort

(nums,left,i-1)

;sort

(nums,i+

1,right);}

}}

演算法分析:快速排序平均時間複雜度為 o(nlogn),最壞的情況下退化成插入排序了,為 o(n^2)。

快速排序是不穩定的,當 a=b空間複雜度平均為 o(logn),空間複雜度主要是由於遞迴造成的。

快速排序還有很多改進版本,如隨機選擇基準數,區間內資料較少時直接用另外的

方法排序以減小遞迴深度。

六,快速排序

快速排序,顧名思義,排序速度很快,也是面試常常被問到的排序演算法之一。快速排序關鍵在於乙個軸,讓其他的數字和這個軸的值相比較,如果小於等於這個軸把數字放到軸的左邊,否則放到右邊。這樣你會發現,這個軸現在在的位置就是他應該在的位置了。那麼第一次迴圈後就變成這個樣子,然後分別指定兩邊的陣列的軸,分別對兩...

Java排序(氣泡排序 快速排序)

一 氣泡排序 冒泡演算法原理 冒泡演算法就是依次比較陣列中相鄰的兩個元素,如果左邊比右邊大則進行調換,以此類推,這樣第一次排序就把最大的元素放在最底下。舉例說明 要排序陣列 int arr 第1輪排序前陣列為 7,2,6,5,9,4 第1輪第1次比較 7大於2交換位置 2,7,6,5,9,4 第1輪...

java 快速排序

public class myquicksort while strvoid middle strvoid low lowif low hight else if hight middle temp strvoid hight strvoid hight strvoid low strvoid lo...