整理下最近學習的演算法,也方便有需要的人檢視
簡單排序:插入排序、選擇排序、氣泡排序(必學)
分治排序:快速排序、歸併排序(必學)
分配排序:桶排序、基數排序
樹狀排序:堆排序(必學)
其他:計數排序(必學)、希爾排序
原理:通過比較相鄰的兩個元素的大小實現排序,如果後邊的元素大於前面的元素,那麼就交換元素,這樣每一趟冒泡都能找到最大乙個元素並放到最後。
phpcode實現
$data
=array(2
,1,3
,9,4
,6,5
,8,7
);$datacount
=count
($data);
for($i=
0;$i<
$datacount-1
;$i++)
}if(!
$isswap)}
print_r
($data
);
gocode實現
package main
import
"fmt"
func
main()
datanum :=
len(data)
for i :=
0; i < datanum -
1; i++}if
!isswap
} fmt.
println
(data)
}
穩定性:它是指對同樣的資料進行排序,會不會改變它的相對位置。冒泡是比較兩個相鄰的元素的大小,所以不會破壞穩定性。
空間複雜度:原地排序,故為o(1)
時間複雜度:由於巢狀了2層迴圈,所以複雜度為
平均情況:o(n²)
最壞情況:o(n²)
最好情況:o(n)
十大排序演算法之氣泡排序
氣泡排序是一種簡單的排序方法。基本的演算法思想就是對要排序的一組資料進行一遍遍的遍歷,每次遍歷都對相鄰的元素進行比較且調整順序,直到這組資料沒有需要調整的地方,排序完成。下面先用文字敘述一下該排序演算法 公升序 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個,從頭一直比到尾,這樣最終,隊尾...
十大排序演算法之氣泡排序1
氣泡排序是最簡單的排序演算法,通過比較相鄰的兩個數字,如果前面的比後面的大則交換位置,否則不變。因此外層迴圈需要n 1次,因為每次比較的是兩個數字,到倒數第二個則可以停止比較,這一次迴圈結束。同時外層每迴圈一次則有乙個數排序完成,因此內層迴圈n 1 i,i為外層的迴圈數,如下。def bsort a...
python十大排序演算法 氣泡排序
演算法描述 是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。演算法步驟 比較相鄰的元素。如果第...