挖坑法之 快速排序

2021-10-10 02:44:51 字數 747 閱讀 8000

速度快,耗時小,面對資料量大的題目時可用快排

選取基準數,不斷「挖坑、填坑」

使小於基準數的數全在其左邊,大於其的數全在右邊

最後陣列有序

參考鏈結

選擇最左端的數為基準數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 再對左右區間重複...