各種排序演算法分析總結

2021-05-23 18:51:36 字數 1371 閱讀 4166

排序演算法:

1)分類:

1)插入排序(直接插入排序、希爾排序)

2)交換排序(氣泡排序、快速排序)

3)選擇排序(直接選擇排序、堆排序)

4)歸併排序

5)分配排序(箱排序、基數排序)

所需輔助空間最多:歸併排序

所需輔助空間最少:堆排序

平均速度最快:快速排序

不穩定:快速排序,希爾排序,堆排序。

1)選擇排序演算法的時候

1.資料的規模 ;  2.資料的型別 ;  3.資料已有的順序

一般來說,當資料規模較小時,應選擇直接插入排序或氣泡排序。任何排序演算法在資料量小時基本體現不出來差距。 考慮資料的型別,比如如果全部是正整數,那麼考慮使用桶排序為最優。  考慮資料已有順序,快排是一種不穩定的排序(當然可以改進),對於大部分排好的資料,快排會浪費大量不必要的步驟。資料量極小,而起已經基本排好序,冒泡 是最佳選擇。我們說快排好,是指大量隨機資料下,快排效果最理想。而不是所有情況。

3)總結:

——按平均的時間效能來分

1)時間複雜度為o(nlogn)的方法有:快速排序、堆排序和歸併排序,其中以快速排序為最好;

2)時間複雜度為o(n2)的有:直接插入排序、起泡排序和簡單選擇排序,其中以直接插入為最好,特別是對那些對關鍵字近似有序的記錄序列尤為如此;

3)時間複雜度為o(n)的排序方法只有,基數排序。

當待排記錄序列按關鍵字順序有序時,直接插入排序和起泡排序能達到o(n)的時間複雜度;而對於快速排序而言,這是最不好的情況,此時的時間性 能蛻化為o(n2),因此是應該盡量避免的情況。簡單選擇排序、堆排序和歸併排序的時間效能不隨記錄序列中關鍵字的分布而改變。

——按平均的空間效能來分(指的是排序過程中所需的輔助空間大小):

1) 所有的簡單排序方法(包括:直接插入、起泡和簡單選擇)和堆排序的空間複雜度為o(1);

2) 快速排序為o(logn ),為棧所需的輔助空間;

3) 歸併排序所需輔助空間最多,其空間複雜度為o(n );

4)鏈式基數排序需附設佇列首尾指標,則空間複雜度為o(rd )。

——排序方法的穩定性能:

1) 穩定的排序方法指的是,對於兩個關鍵字相等的記錄,它們在序列中的相對位置,在排序之前和經過排序之後,沒有改變。

2) 當對多關鍵字的記錄序列進行lsd方法排序時,必須採用穩定的排序方法。

3) 對於不穩定的排序方法,只要能舉出乙個例項說明即可。

4) 快速排序,希爾排序和堆排序是不穩定的排序方法。

各種排序演算法總結

注 以下所講排序,以公升序排序為例!選擇排序 作者思路 在一組數中,選擇第乙個數標記為最小值,在剩下的數中找比它小的數,若找到則交換兩數,標記新的 最小值 然後繼續往下找,這樣一趟下來就可以找到一組數中第二小的值,第二次以第二個數作為最小值,如此迴圈下去。這是最簡單 最基礎的一種排序演算法。例子 1...

各種排序演算法總結

1 插入排序 void insertsort int a,int n a j 1 key 插入排序是穩定的排序,平均和最壞時間複雜度是o n 2 最好的時間複雜度是o n 對應於全部排好序的情況。2 氣泡排序 void bubblesort int a,intn 氣泡排序是穩定的排序,平均和最壞時間...

各種排序演算法總結

created by vencent on 2008.8.29 1.插入排序 1.1 一般插入排序 insertsort int array,int length 1.2 折半插入排序 bininsertsort int array,int length 1.3 希爾排序 shellsort int...