複習備考資料結構與演算法(五) 排序方法比較

2021-10-01 12:10:14 字數 1514 閱讀 7654

寫在前面

明天考試了,今天是最後的複習時間,這學期以來直到期末才認認真真把教材翻完,我的教材現在被翻得糜爛的,嗯······這才是讀書人的書應該有的樣子,感覺真的比之前上課聽天書一樣的好多了,期末考試考什麼內容和題型我都摸清了,估計應付考試不難,可能最後的演算法設計題會有些困難,隨緣吧不管了

桶排序我們要在資料範圍為1-1000的若干個數里進行排序,那麼需要1000個桶,來記錄每乙個數出現的次數,令初始陣列a[1]-a[1000]的每乙個數都為0,意味著資料為1,2,…,1000的個數都為0,哪乙個數出現一次,對應的陣列項加1

#include

intmain()

for(i=

1;i<=

1000

;i++

)return0;

}

案例實現

2. 快速排序

快速排序是最常用的排序方法,在排序資料完全無序的情況下最易發揮其長處,當資料基本有序時,快速排序有最壞時間複雜度為o(n2)

快速排序的基本思想就是:每次排序時設定乙個基準點,把序列中小於等於基準數的數放在基準點左邊,大於等於基準數的數放在基準點右邊。快速排序需要用到遞迴思想,每一趟排序把基準點的數放在最終的位置,在分別對基準點左右兩邊的資料進行快速排序。

看看**:

#include

int a[

101]

,n;void

quicksort

(int left,

int right)

}

a[left]

=a[i]

; a[i]

=temp;

quicksort

(left,i-1)

;quicksort

(i+1

,right);}

intmain()

案例實現

3. 氣泡排序

基本思想是每次比較兩個相鄰的元素,如果順序錯誤就交換位置

時間複雜度比較高o(n2)

//氣泡排序

#include

intmain()

}}for(i=

0;i)printf

("%d "

,a[i]);

return0;

}

案例實現

資料結構與演算法複習 一 排序演算法

這篇文章將會介紹常見的排序演算法 使用 c 實現 將陣列分為有序區 左邊 和無序區 右邊 在初始化時有序區為空,無序區包含陣列所有元素 每次從無序區的最後乙個元素開始,一直向前冒泡到無序區的第乙個位置,使其變成有序 templatevoid swap e a,int i,int j template...

資料結構與演算法(九)排序

演算法 時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好 空間複雜度 穩定性氣泡排序 o n 2 o n 2 o n o 1 穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定插入排序 o n 2 o n 2 o n o 1 穩定希爾排序 o nlogn o n 2 o n o 1...

資料結構與演算法 四 排序

def heap sort li def heapfly li start len li 2 1 獲取最後乙個葉子節點的父節點 for nod in range start,1,1 left 2 nod 1 right min left 1,len li 1 temp left if li left...