八大排序(五)快速排序

2021-09-16 11:56:59 字數 433 閱讀 3714

快速排序使用了分治策略。

一:選定乙個基準數(一般選取第乙個數),然後把大於它的數都放在它右邊,把小於它的數放左邊。

二:這樣就把陣列分成左右兩部分。再將左右兩部分分別遞迴執行第一步,最終當執行第一步的部分大小為一時,遞迴完成,原陣列排序完成。

public class quicksort

//將剛剛找到的數插入到i的位置,(第一次插入時就是插入到cruent的位置)

if (i輸出結果:

[2, 3, 4, 5, 6, 7, 9, 10]

快速排序是不穩定排序

其時間複雜度

最壞o(n²)

平均o(n*logn)

把原陣列當作乙個二叉樹,則遞迴次數就相當於二叉樹的深度。

而最小深度為lg(n+1)

最大深度為n

而每次遞迴的時間複雜度為o(n)

Python八大排序(五) 快速排序

如下 5.快速排序 交換排序 思想 先找乙個虛擬的中間值,按此中間值將所有資料分為兩部分,小於中間值的資料放在左邊大於中間值的放在右邊,在以同樣的方式處理 左右兩邊的資料直到排完序為止。def quick sort num list if len num list 2 return num list...

八大排序(三) 快速排序

快速排序的基本思想如下 設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序是一種不穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算...

八大排序之快速排序

快速排序 public class quicksort int arr 測試時間複雜度 o n 2 int arr new int 80000 for int i 0 i arr.length i long start time system.currenttimemillis quicksort ...