快速排序使用了分治策略。
一:選定乙個基準數(一般選取第乙個數),然後把大於它的數都放在它右邊,把小於它的數放左邊。
二:這樣就把陣列分成左右兩部分。再將左右兩部分分別遞迴執行第一步,最終當執行第一步的部分大小為一時,遞迴完成,原陣列排序完成。
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 ...