氣泡排序、選擇排序、插入排序,交換排序,時間複雜度為o(n^2);
快速排序、歸併排序、堆排序時間複雜度為o(nlogn);
基數排序、計數排序,劃分排序,桶排序,時間複雜度都是o(n)
假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,
ri=rj
,且ri在rj
之前,而在排序後的序列中,
ri仍在
rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。
排序演算法
平均時間複雜度
最差時間複雜度
額外空間複雜度
穩定性備註
氣泡排序
o(n^2)
o(n^2)
o(1) 穩定
n小時效果好
選擇排序
o(n^2)
o(n^2)
o(1)
不穩定n小時效果好
交換排序
o(n^2)
o(n^2)
o(1)
不穩定n小時效果好
插入排序
o(n^2)
o(n^2)
o(1) 穩定
n小時效果好
快速排序
o(nlogn)
o(n^2)
o(nlogn)-o(n)
不穩定n大時效果好
歸併排序
o(nlogn)
o(nlogn)
o(n) 穩定
n大時效果好
堆排序o(nlogn)
o(nlogn)
o(1)
不穩定n大時效果好
希爾排序
o(nlogn)
o(ns) 1
o(1)
不穩定s是所選分組
基數排序
o(log
rb)(
線性複雜度)
o(logrb)
o(n)穩定b
是真數(0-9), r
是基數(
個十百)
計數排序
o(n)
o(nlogn)穩定0
劃分排序
o(n)00
穩定0桶排序o(n)00
穩定0快速排序空間複雜度解析:快速排序來說,沒有申請額外的空間,為什麼空間複雜度不是o(1)呢,原來啊,快速排序用了遞迴來實現,
而遞迴的話,就造成了棧空間的使用,遞迴樹的深度為(logn),因此快排的空間複雜度為o(nlogn)
堆排序空間複雜度解析:堆排序是就地排序,並沒有申請額外的儲存空間(最多就是交換時,使用的臨時變數),因此空間複雜度為o(1)
時間複雜度:時間複雜度是指執行演算法所需要的計算工作量
空間複雜度:而空間複雜度是指執行這個演算法所需要的記憶體空間
由雲端引起的藍屏
今天早上剛起床,舍友就嚷嚷著電腦 聯想g450 重啟,我首先想到的是由於溫度的原因引起電腦自我保護,他卻說電腦剛開啟。重啟之後想用360體檢看是否為病毒 木馬 的原因 注 嚴格來說360算不上是防毒軟體,只能算的上是系統優化軟體 還沒走一半電腦藍屏,藍屏介面一閃而過,沒看到藍屏 引起藍屏的原因是很多...
由memcpy越界引起的崩潰
乙個linux的cm出了問題,在開發環境下,是正常的。在現場是崩潰的。比較環境的區別,輸入的資料不一樣。還好運氣不錯,拿到現場的資料,在開發環境中也能重現其中乙個資料引起的崩潰問題。崩潰現象,單步到函式fna,任務都做了,看任務結果也都有效,但是從函式返回時,還沒到呼叫處,就崩潰了。這bug現象,我...
由pthread create引起的段錯誤
一般執行緒的結束是由程序內的其他執行緒來結束的,呼叫pthread cancel.但是需要考慮到被結束執行緒的性質,一方面,執行緒是可被結束,也可無法結束,即不響應該訊號 另一方面,如果執行緒是可被結束的,那麼結束的方式有兩種,一種是同步,當執行緒收到這個訊號的時候先掛起,等到下乙個取消點時再響應該...