原理:從數列中挑出乙個元素,稱為 「基準」(pivot)。重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;
遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序;
邏輯**
public
class
quicksort
;quick
(arr,
0,arr.length-1)
; utils.
printarr
(arr);}
static
void
quick
(int
arr,
int left,
int right)
//從左邊開始查詢大於基準值的數
while
(i < j && arr[i]
<= temp)
if(i < j)
}//交換基準值和最終位置下標的對應的數
arr[left]
= arr[i]
; arr[i]
=temp;
//遞迴
quick
(arr,left,i-1)
;quick
(arr,i+
1,right);}
}
2.演示圖:總結
時間複雜度(平均)
時間複雜度(最好)
時間複雜度(最壞)
空間複雜度
穩定性o(nlog2n)
o(nlog2n)
o(n²)
o(nlog2n)
不穩定
十大排序演算法之快速排序
簡單排序 插入排序 選擇排序 氣泡排序 必學 分治排序 快速排序 歸併排序 必學 分配排序 桶排序 基數排序 樹狀排序 堆排序 必學 其他 計數排序 必學 希爾排序 原理 核心思想是通過乙個支點進行資料拆分,左邊的資料小於這個支點,右邊的資料大於支點,然後把左邊和右邊的做一次遞迴,直到遞迴結束。ph...
十大排序演算法
1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...
十大排序演算法
排序規則 從左至右依次增大 一 基於比較的排序演算法 插入排序 逐個遍歷未排序序列,將其在已排序序列中從右到左比較,直到遇到比自己小的數,然後將元素插入到那個數的後面,有序序列從左向右生長。選擇排序 在未排序序列中選擇最小的元素,將其插入到已排序序列的末尾,有序序列從左向右生長。氣泡排序 從左至右逐...