演算法之快速排序

2021-07-30 20:34:30 字數 547 閱讀 5228

很開心,今天第一次寫出了快速排序演算法。很早就講過但是我一直不會,沒有自己動手寫過,今天看了很久終於自己可以寫出來了。

#include"cstdio"

#include"algorithm"

using

namespace

std;

void f(int *a,int n)

}for(;iif(a[i]>key)}}

f(a,i);

f(a+i+1,n-i-1);

}}int main()

關於快速排序的講解真的太多了,我就沒有必要說了。先簡單看一遍快速排序的大概意思再看**會好很多。快速排序也是氣泡排序的一種,不過改良了。所以我用了swap這個函式不斷地進行交換,原理呢簡單來說是二分法,隨機選某乙個數(一般都是第乙個,如果選的不是第乙個這個演算法需要稍稍的改動),把比這個數字大的移到右邊,比數字小的移動到左邊,然後就是遞迴,把左右兩邊再進行快速排序,就這樣,一直到劃分後的陣列裡只剩乙個元素,結束,這樣就分好了。平均複雜度是nlogn。寫完了感覺確實不難,明晚加油~~

演算法 排序演算法之快速排序

很受打擊啊啊啊啊啊!這道排序題我很久之前就做過,而且當時沒用20分鐘就搞定了,可是,今天在公司做完手上的活之後打算刷題時,又心血來潮的想重做一遍,心想反正也花不了多少時間,結果。血崩了。要求 對於乙個int陣列,請編寫乙個快速排序演算法,對陣列元素排序。給定乙個int陣列a及陣列的大小n,請返回排序...

演算法 排序演算法之快速排序

快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 nlogn 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 nlogn 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實現出來。快速排序...

排序演算法之快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出...