速度快,耗時小,面對資料量大的題目時可用快排
選取基準數,不斷「挖坑、填坑」
使小於基準數的數全在其左邊,大於其的數全在右邊
最後陣列有序
參考鏈結
選擇最左端的數為基準數x
可將其視為乙個坑,可以將別的數填入這個坑
從右往左尋找小於x的數y,找到後填入坑,此時原基準數的坑被填,而y處產生新的乙個坑,然後從左往右尋找大於基準數x的數,填入y的坑
重複上述步驟2,直到上下界下標重合,將基準數填入重合處
此時,x左端全部小於x,右端全部大於x,對左右兩塊區域分別重複123,最後陣列全部有序
#include
using
namespace std;
void
quick_sort
(int
*a,int inx_min,
int inx_max)
a[min]
= x;
//最後退出迴圈時min==max,將x填入最後的坑
//此時a[min]左邊全小於a[min],右邊全大於a[min]
//遞迴呼叫,將兩邊區域繼續排序,直到區域只有乙個數
quick_sort
(a, inx_min, min -1)
;quick_sort
(a, min +
1, inx_max);}
}int
main()
快速排序 挖坑填補法
看了這片文章,確實非常形象,quicksort 找乙個標準值 樞軸 將比標準值小的放到左側,比標準值大的放在它右側,根據標準值位置將當前資料分割成兩部分,兩部分分別重複以上以上操作 includeint sort int arr,int nlow,int nhigh nhigh 從前向後找比標準值大...
快速排序 挖坑填數 分治法
快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 ...
快速排序(Quick Sort) 挖坑填數法
前面的博文講了氣泡排序 選擇排序 插入排序,今天我們談談快速排序!快速排序的基本思想是 1 先從序列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。分割槽的方式多樣,但一定要保證基準數左邊的數比它大 小 右邊的數比它小 大 3 再對左右區間重複...