寫乙個系列的經典演算法,共同學習!
1.快速排序
基本思想:
1.先從數列中取出乙個數作為基準數。
2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
3.再對左右區間重複第二步,直到各區間只有乙個數。
在網上看到一篇部落格,把快速排序命名為 挖坑填數+分治法,感覺很有道理,所以等會程式就按這兩部來寫。
先說說挖坑填數的思想:
1.i=l;j=r; 將基數挖出形成第乙個坑a[i].
2.j--由後向前找出比它的小的數,找到後挖出此數填前乙個坑a[i].
3.i++由前向後找出比它大的數,找到後挖出此數填前乙個坑a[j].
4.重複2,3步驟直到i==j,將基數填入a[i]中。
**實現
intadjust(
inta,
inti,
intj)
分治:int
quick_sort(
inta,
intl,
intr)
}這樣分兩步就把快速排序解決了,挺簡單的。當然這樣寫有點麻煩,可以簡單一些:
intquick(
inta,
intl,
intr)
}
經典演算法系列一 快速排序
寫乙個系列的經典演算法,共同學習!1.快速排序 基本思想 1.先從數列中取出乙個數作為基準數。2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3.再對左右區間重複第二步,直到各區間只有乙個數。在網上看到一篇部落格,把快速排序命名為 挖坑填數 分治法,感覺很有道理,所以...
白話經典演算法系列之 快速排序 快速搞定
總的說來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家理解有幫助,達到快速排序,快速搞定。快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod ...
白話經典演算法系列之六 快速排序 快速搞定
總的說來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家理解有幫助,達到快速排序,快速搞定。快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod ...