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