資料結構 七大排序演算法總結

2021-08-06 06:08:38 字數 888 閱讀 6493

面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。

插入,希爾,選擇,堆:

冒泡,快速

歸併

排序方法

初始序列有無影響

最好情況

最壞情況

插入排序

正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為o(n)

逆序有序這樣每乙個元素就需要比較n次,共有n個元素,因此實際複雜度為o(n­2)

shell排序

與選的步長有關由於希爾排序的好壞和步長d的選擇有很多關係,因此,目前還沒有得出最好的步長如何選擇(現在有些比較好的選擇了,但不確定是否是最好的)。所以,不知道最好的情況下的演算法時間複雜度。

o(n*logn),最壞的情況下和平均情況下差不多。

選擇排序

無堆排序

無氣泡排序

正序有序,則只需要比較n次。故,為o(n)

逆序有序,則需要比較(n-1)+(n-2)+……+1,故,為o(n*n)

快速排序

無序時因為每次都將序列分為兩個部分(一般二分都複雜度都和logn相關),故為 o(nlogn)

基本有序時,退化為氣泡排序,幾乎要比較n*n次,故為o(n*n)

歸併排序

資料結構 七大排序(一)

排序 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。穩定性 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次 序保持不變,即在原序列中,r i r j 且r i 在r j 之前,而在排序後的序列中,r i 仍在r j 之...

資料結構和演算法 七大排序演算法實現

七大排序演算法實現 include using namespace std void swap int num1,int num2 1.選擇排序演算法 bool selectionsort int arr,int len if max len i 1 return true 2.氣泡排序演算法 bo...

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...