本文主要講解下平常我們用到的堆排序,歸併排序以及快速排序的時間和空間複雜度。
堆排序:
堆排序分為建堆和調整堆。建堆是通過父節點和子節點兩兩比較並交換得到的,時間複雜度為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),因為遞迴棧空間的使用問題。
不穩定排序。
排序演算法 時間複雜度和空間複雜度
常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...
排序演算法的 時間複雜度 和 空間複雜度
常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 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...
各排序演算法的效能(複雜度)
1.時間複雜度 時間複雜度可以認為是對排序資料的總的操作次數。反映當n變化時,操作次數呈現什麼規律。1 常見的時間複雜度有 常數階o 1 對數階o log 2 n 線性階o n 線性對數階o nlog 2 n 平方階o n2 2 時間複雜度o 1 演算法中語句執行次數為乙個常數,則時間複雜度為o 1...