由LeetCode排序引起的排序演算法總結

2021-07-31 00:12:08 字數 1466 閱讀 3125

氣泡排序、選擇排序、插入排序,交換排序,時間複雜度為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.但是需要考慮到被結束執行緒的性質,一方面,執行緒是可被結束,也可無法結束,即不響應該訊號 另一方面,如果執行緒是可被結束的,那麼結束的方式有兩種,一種是同步,當執行緒收到這個訊號的時候先掛起,等到下乙個取消點時再響應該...