面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。
插入,希爾,選擇,堆:
冒泡,快速
歸併
排序方法
初始序列有無影響
最好情況
最壞情況
插入排序
有正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為o(n)
逆序有序這樣每乙個元素就需要比較n次,共有n個元素,因此實際複雜度為o(n2)
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...