演算法複雜度與穩定性

2021-08-07 18:14:13 字數 804 閱讀 6258

時間複雜度是乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行

測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度,演算法所耗時長和演算法的時間複雜度成正比。記為t(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(n)

插入排序

o(n2)

o(n2)

穩定o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定o(1)

希爾排序oo

不穩定o(1)

排序演算法的穩定性,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果a[i] = a[j],a[i]原來在位置前,排序後a[i]還是要在a[j]位置前。

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,而氣泡排序、插入排序、歸併排序和基數排序是穩定的排序演算法

記錄排序演算法穩定性與複雜度

類別 排序方法 時間複雜度 空間複雜度 穩定性最好情況 最壞情況 平均情況 輔助儲存 插入排序 直接插入排序 o n o n2 o n2 o 1 穩定 希爾排序 o n o n2 o n1.3 o 1 不穩定交換排序 氣泡排序 o n o n2 o n2 o 1 穩定 快速排序 o nlogn o ...

排序演算法時間複雜度 空間複雜度 穩定性整理

涉及排序演算法包括 簡單選擇排序 直接插入排序 希爾排序 歸併排序 氣泡排序 快速排序 堆排序 基數排序 時間複雜度 快些以nlogn的速度歸隊 此句表示時間複雜度為o nlogn 的排序,快 表示快速排序,些 表示希爾排序,歸 表示歸併排序,隊 表示堆排序,其他排序均為o n 特殊的基數排序為o ...

排序演算法的複雜度和穩定性

本文簡單介紹幾種面試中常用的排序演算法,並對每個演算法的時間複雜度 空間複雜度 穩定性進行分析。1 氣泡排序 void swap int num1,int num2 void bubblesort int array,int size int main int argc,const char arg...