常用排序演算法的時間複雜度和空間複雜度

2022-08-09 04:57:09 字數 2148 閱讀 2545

以上快速排序和歸併排序的空間複雜度不正確

圖2沒有的參考圖1,以圖2為準(對,就是懶得重新畫圖了)

排序法最差時間分析

平均時間複雜度

穩定度

空間複雜度

氣泡排序

o(n2)

o(n2)

穩定 o(1)

快速排序

o(n2)

o(n*log2n)

不穩定

o(log2n)~o(n)

選擇排序

o(n2)

o(n2)

穩定 o(1)

二叉樹排序

o(n2)

o(n*log2n)

不穩定

o(n)

插入排序

o(n2)

o(n2)

穩定 o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定

o(1)

希爾排序oo

不穩定

o(1)

1.插入排序

由n-1趟排序組成,對於p=1到p=n-1趟,插入排序保證從位置0到位置p上的元素為已排序狀態。

時間複雜度:o(n^2)

**void insertionsort(elementtype a,int n)

a[j]=tmp;}}

2.希爾排序

希爾排序使用乙個序列h1,h2,h3,ht,叫做增量排序。在使用增量hk的一趟排序之後,對於每個i我們有a[i]時間複雜度:o(n^(1+a)),其中0

//

**不太好理解,使用了3層迴圈

void shellsort(elementtype a,int

n) a[j]=tmp;}}

}

3. 堆排序

思想:建立小頂堆,然後執行n次deletemin操作。

時間複雜度:o(nlogn),實踐中,慢於sedgewick的希爾排序

空間複雜度:o(n),用於建立堆得陣列

4.歸併排序

使用遞迴把陣列分為兩部分分別排序,然後合併成乙個陣列

時間複雜度:o(nlogn)

空間複雜度:o(n)

**void merge(elementtype a,elementtype tmparray, int lpos, int rpos, int rightend)

分成兩個不相交的集合:分別是s1(小於v),和大於v的部分s2

④返回quicksort(s1),繼隨v,繼而quicksort(s2)

時間複雜度:o(nlogn)

程式設計思想:1.選取樞紐元,取首尾及中間的三個元素,排序,小的排在首位,大的排在尾部,中的作為樞紐元

2.排序時把樞紐元放在right-1的位置上,i=left+1;j=right-2;開始交換過程

**elementtype median3(elementtype a,int left, int right)

qsort(elementtype a,int left,int right)

swap(&a[i],&a[right-1]);

qsort(a,left,i-1);

qsort(a,i+1,right);

}else

insertsort(a,right-left+1);

}6.直接選擇排序

描述:選出陣列中最小的元素,與陣列的第乙個元素交換;然後選擇出陣列中次小的元素,與與第二個元素交換,直到完成

選擇排序需要比較n(n-1)/2次,即n2次,而交換則只需要n-1次

對於是否已經排好序,或者隨機檔案,所花費的時間是一致的,即執行時間具有強迫性

選擇排序應用在資料項比較大,鍵比較小的情況下,因為此時移動元素花費時間較多,而對於其他排序演算法,元素移動頻繁的多

**void sort(elementtype a, int n) 

,排序後a = 。

希爾排序:a = ,排序後(k = 2);a = 。

堆排序:a = ,排序後a = 。

直接選擇排序: a = ,排序後 a = 。

以上舉例都不滿足穩定性。

常用排序演算法的時間複雜度和空間複雜度

總結 1 當排序記錄個數n較大,關鍵碼分布較隨機,且對穩定性不作要求時,採用快速排序為宜。2 當待排序記錄個數n較大,記憶體空間允許,且要求穩定排序時,採用歸併排序。3 當待排序記錄個數n較大,關鍵碼分布可能出現正序或逆序的情況,且對穩定性不作要求時,採用堆排序或歸併排序。4 當待排序記錄個數n較大...

常用的排序演算法的時間複雜度和空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log2n...

常用的排序演算法的時間複雜度和空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法最差時間分析 平均時間複雜度 穩定度空間複雜度 氣泡排序 o n2 o n2 穩定o 1 快速排序 o n2 o n log2n 不穩定o log2n o n 選擇排序 o n2 o n2 穩定o 1 二叉樹排序 o n2 o n log2n 不一頂o...