0.十大經典排序演算法
1.排序演算法分類
非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o(nlogn),因此稱為非線性時間比較類排序。
線性時間非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排序。
2.時間 / 空間複雜度對比
演算法名稱
時間複雜度
空間複雜度
排序方式
穩定性
最佳平均
最差最差
氣泡排序(bubblesort)
o(n)
o(n^2)
o(n^2)
o(1)
in-place
穩定選擇排序(selectionsort)
o(n^2)
o(n^2)
o(n^2)
o(1)
in-place
不穩定插入排序(insertionsort)
o(n)
o(n^2)
o(n^2)
o(1)
in-place
穩定希爾排序(shellsort)
o(n)
o((nlog(n))^2)
o((nlog(n))^2)
o(1)
in-place
不穩定歸併排序(mergesort)
o(nlog(n))
o(nlog(n))
o(nlog(n))
o(n)
out-place
穩定快速排序(quicksort)
o(nlog(n))
o(nlog(n))
o(n^2)
o(log(n))
in-place
不穩定堆排序(heapsort)
o(nlog(n))
o(nlog(n))
o(nlog(n))
o(1)
in-place
不穩定計數排序(countsort)
o(n+k)
o(n+k)
o(n+k)
o(k)
out-place
穩定桶排序(bucketsort)
o(n+k)
o(n+k)
o(n^2)
o(n)
out-place
穩定基數排序(radixsort)
o(nk)
o(nk)
o(nk)
o(n+k)
out-place
穩定名詞解釋:
排序演算法總結對比
常用排序演算法分析 void swap int x,int y 氣泡排序 時間複雜度為o n 2 兩兩比較,交換,每次內層迴圈在未排序序列中找出最大值放到已排序中 對於部分有序的序列來說,效率較高 穩定 void bubble sort int arr,int start,int end if po...
0 演算法總結對比 更新中
排序過程元素位置移動的程度 演算法移動的時間衡量 通過演算法遍歷元素個數體現 演算法是否需要額外的空間 名稱效能 演算法思想 演算法型別 時間複雜度 平均時間複雜度 空間複雜度 穩定性適用資料場景 選擇排序 一般元素移位節約空間消耗時間 比較型o n o n o 1 不穩定不常用 氣泡排序 一般比較...
排序演算法對比
2019 september 07 排序演算法對比 排序演算法 平均時間複雜度 最好情況 最壞情況 空間複雜度 原址排序 比較排序 穩定插入排序 theta left n right theta left n right theta left n right mathbf left 1 right ...