快速演算法實現 挖坑填數

2021-06-21 10:09:09 字數 763 閱讀 7142

快速排序作為時間複雜度為o(nlogn)的演算法,在實際中經常用到。下面簡單的講解一下快速排序演算法的實現思路。

看到網上這位大牛的思路寫的非常好。挖坑填數,非常形象。下面簡單的介紹一下。

快速排序用到時分治法的思想。主要可以分為以下的三步。

1、選定乙個數作為基數

2、將大於這個的基數的數全放在右邊,小於這個基數的數全部放在左邊

3、對左右區間中的數重複1、2步驟,直到區間中只有乙個數。

這樣描述可能有一點難以理解,我們可以用挖坑+填數的方式來很好的理解

1、對於陣列a,實現l到r的排序,首先挖坑key=a[l],令i=l,j=r,此時形成第乙個坑a[i]

2、j--直到a[j]小於key的地方,令a[i]=a[j],此時a[j]形成乙個新的坑,i++

3、i++直到a[i]大於key的地方,令a[j]=a[i],填上坑a[j],此時a[i]形成新的坑,j--

4、再重複執行2,

3二步,直到

i==j

,將key填入

a[i]

中進經過上面的一番講解,突然一下子變得清晰明了了。

**實現就很簡單了。

//一次劃分

int partion(int a,int left,int right)

{ //先將第乙個數設定成乙個坑a[left]

int i=left,j=right;

int key=a[left];

while(i=key)

j--;

//如找到且i

快速排序(Quick Sort) 挖坑填數法

前面的博文講了氣泡排序 選擇排序 插入排序,今天我們談談快速排序!快速排序的基本思想是 1 先從序列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。分割槽的方式多樣,但一定要保證基準數左邊的數比它大 小 右邊的數比它小 大 3 再對左右區間重複...

「挖坑填坑」理解快速排序

快速排序的基本思路 找乙個基準元素,對陣列進行調整,調整的標準是,這個基準元素的左邊存放的都是比這個元素小的,右邊都是比這個元素大的。然後分而治之,對左右兩邊的子陣列利用同樣的規則調整,調整到每乙個子陣列中都只有乙個元素時結束。基本思想很簡單,主要是理解如何在確定基準元素之後,對陣列 子陣列 進行調...

快速排序 挖坑填數 分治法

快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 ...