各排序算法的時間復雜度和空間復雜度


本文主要講解下平常我們用到的堆排序,歸並排序以及快速排序的時間和空間復雜度。

堆排序:

堆排序分為建堆和調整堆。建堆是通過父節點和子節點兩兩比較並交換得到的,時間復雜度為O(n),調整堆需要交換n-1次堆頂元素,並調整堆,調整堆的過程就是滿二叉樹的深度logn,所以時間復雜度為O(nlogn),所以最終時間復雜度為O(nlogn)。

空間復雜度為O(1)。

不穩定排序。

 

歸並排序:

歸並排序主要就是分解,和歸並排序兩部分,分解需要掃描所有的元素,所以時間復雜度為O(n)。歸並過程中,兩兩歸並,其實就是滿二叉樹,深度為logn,每一層都要進行兩兩比較,也就是n次,所以時間復雜度為O(nlogn)。歸並過程中是需要保存排序好的元素,所以空間復雜度為O(n)。

穩定排序。

 

快速排序:

簡單的可以認為,每次需要二分分解,左右兩邊均勻,每層需要比較n次比較,所以時間復雜度為O(nlogn)。當然如果待排序數組本身就是正序或逆序,那么時間復雜度會O(n2)。

空間復雜度為O(logn),因為遞歸棧空間的使用問題。

不穩定排序。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM