排序過程元素位置移動的程度
演算法移動的時間衡量 通過演算法遍歷元素個數體現
演算法是否需要額外的空間
名稱效能
演算法思想
演算法型別
時間複雜度
平均時間複雜度
空間複雜度
穩定性適用資料場景
選擇排序
一般元素移位節約空間消耗時間
比較型o(n²)
o(n²)
o(1)
不穩定不常用
氣泡排序
一般比較型
o(n²)
o(n²)
o(1)
不穩定不常用
插入排序
一般比較型
o(n²)
o(n²)
o(1)
穩定不常用
快速排序
一般比較型
o(nlogn)-o(n²)
o(nlogn)
o(1)
不穩定比較型排序場景可使用
基數排序
優秀分配式排序
o(d*n)
o(d*n)
o(n)
穩定計數排序
優秀
非比較型
o(n+k)
o(n+k)
o(k)
穩定
資料範圍小且集中,比如全國人口年紀排序
歸併排序
一般分治法
比較型o(nlogn)-o(n)
o(nlogn)
o(n)
穩定不推薦效能一般實現複雜
堆排序一般
比較型o(n²)-o(nlogn)
o(nlogn)
o(1)
不穩定不推薦結構複雜效率一般
桶排序
優秀
分配式排序
o(n²)-o(n)
o(n)
o(n)
穩定
比較讚且簡單通用的排序演算法
希爾排序
錦標賽排序
參考文件
runoob演算法
各種演算法效率測試
上面列舉演算法原始碼實現
排序演算法總結對比
常用排序演算法分析 void swap int x,int y 氣泡排序 時間複雜度為o n 2 兩兩比較,交換,每次內層迴圈在未排序序列中找出最大值放到已排序中 對於部分有序的序列來說,效率較高 穩定 void bubble sort int arr,int start,int end if po...
排序演算法總結對比
0.十大經典排序演算法 1.排序演算法分類 非線性時間比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排...
Android 常用測試框架總結對比
android的測試框架,除了需要適合做ui測試,還需要保證選取的框架有以下幾點特性 robotium athrun tmts monkeyrunner uiautomator 實際使用後,發現uiautomator沒有提供測試結果報告,這一點是硬傷啊 不過還是有解決辦法的,把uiautomator...