比較排序中,氣泡排序,插入排序,堆排序,歸併排序,快速排序等都比較常見。其中快速排序的平均效能是最好的時間複雜度為n*lgn 。已經有證明:任意乙個比較演算法的在最壞的情況下,都需要做ω(n*lgn)次比較。
還有一種很有趣的排序演算法可以在o(n)時間內完成特定序列的排序,那就是計數排序。特定條件所有整數在乙個規定的範圍k內,也就是說a[i] <= k 。 這個演算法很容易理解 , 和比較排序不一樣,計數排序不需要比較。它的思想是通過計算比a[i]小的數的數量來確定a[i]的位置。這裡用到兩個輔助陣列c b ,b用來存放結果,c[i]用於統計小於等於i的數的個數。具體實現:
void countsort(int a[max] , int b[max] , int c[max] , int k)
}
排序演算法 時間複雜度和空間複雜度
常數階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...
排序演算法空間 時間複雜度
排序演算法空間 時間複雜度 簡單排序法 冒泡法是第二維迴圈中自己迴圈,找最小或最大值 選擇排序和交換排序是第二維迴圈與第一維迴圈中的值比較 交換法最清晰,選擇法作了改進,只交換位置標號,演算法複雜度沒變。插入法,它的基本工作原理是抽出牌,在前面的牌中尋找相應的位置插入,然後繼續下一張 較為複雜 高階...