各種排序的時間複雜度和空間複雜度

1.時間複雜度

在計算機科學中,算法的時間複雜度是一個函數,它定性描述該算法的運行時間。這是一個代表算法輸入值的字符串的長度的函數。時間複雜度常用大O符號表述,不包括這個函數的低階項和首項係數。使用這種方式時,時間複雜度可被稱爲是漸近的,亦即考察輸入值大小趨近無窮時的情況。例如,如果一個算法對於任何大小爲 n (必須比 n0 大)的輸入,它至多需要 5n3 + 3n 的時間運行完畢,那麼它的漸近時間複雜度是 O(n3)。爲了計算時間複雜度,我們通常會估計算法的操作單元數量,每個單元運行的時間都是相同的。因此,總運行時間和算法的操作單元數量最多相差一個常量係數。相同大小的不同輸入值仍可能造成算法的運行時間不同,因此我們通常使用算法的最壞情況複雜度,記爲 T(n) ,定義爲任何大小的輸入 n 所需的最大運行時間。另一種較少使用的方法是平均情況複雜度,通常有特別指定纔會使用。時間複雜度可以用函數 T(n) 的自然特性加以分類,舉例來說,有着 T(n) = O(n) 的算法被稱作“線性時間算法”;而 T(n) = O(Mn) 和 Mn= O(T(n)) ,其中 M ≥ n > 1 的算法被稱作“指數時間算法”。

2.空間複雜度

空間複雜度(Space Complexity)是對一個算法在運行過程中臨時佔用存儲空間大小的量度,記做S(n)=O(f(n))。比如直接插入排序的時間複雜度是O(n^2),空間複雜度是O(1) 。而一般的遞歸算法就要有O(n)的空間複雜度了,因爲每次遞歸都要存儲返回信息。一個算法的優劣主要從算法的執行時間和所需要佔用的存儲空間兩個方面衡量。

3.各類排序

在這裏插入圖片描述

4.穩定性

穩定的排序算法:冒泡排序、插入排序、歸併排序和基數排序。
不穩定的排序算法:選擇排序、快速排序、希爾排序、堆排序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章