再談排序與圖論算法
阿新 • • 發佈:2018-03-04
鄰接矩陣 log data- 外部 java 主存 路徑 算法復雜度 每次
2.任何進行交換相鄰元素進行排序的算法均需要O(N2)的復雜度,任何進行比較的排序算法至少需要O(N*log(N))的算法復雜度。 3.堆排序和歸並排序的時間復雜度平均和最壞均為O(N*log(N)) 4.Java中執行一次對象比較是比較昂貴的,移動則是相對節省的,因此歸並排序是java的默認泛型排序算法。C++中默認的是快速排序,比較耗費小;快排對於基本類型均具有最快速度。快速排序選取樞紐元的時候采用三數取中,切勿采用首元素。 5.桶排序:排序的數小於整數M,實例化一個M維的數組初值為0,依次加入桶,再倒回去。 6.基數排序:排序數組有n 個元素,實例化一個包含10個list的數組(相當於n個桶0123456789),依次從個位數到最高位把n個數放入桶中然後再倒回原數組,每次要清空list。
適合字符串的排序。
圖論算法
1.定義:
(1)圖由頂點和邊組成G=(V,E),分為有向圖和無向圖;邊可以有一定權重,邊也稱為度。有向無圈圖也稱為DAG。
(2)圖是稠密的考慮用鄰接矩陣表示O(V2);稀疏圖一般用鄰接表表示O(E+V)。
2.拓撲排序:是對有向無圈圖的一種排序方式,使得如果存在一條從vi到vj的路徑,那麽在排序中vj就出現在vi的後面。(先找出沒有入邊的頂點)
3最短路徑算法:
單源最短路徑問題:給定頂點,到任意其他頂點的最短距離的算法O(V+E):(即為廣度優先搜索breadth-first search)
排序
1.主存能放下的數據進行排序稱為內部排序,反之稱為外部排序(磁盤上)。2.任何進行交換相鄰元素進行排序的算法均需要O(N2)的復雜度,任何進行比較的排序算法至少需要O(N*log(N))的算法復雜度。 3.堆排序和歸並排序的時間復雜度平均和最壞均為O(N*log(N)) 4.Java中執行一次對象比較是比較昂貴的,移動則是相對節省的,因此歸並排序是java的默認泛型排序算法。C++中默認的是快速排序,比較耗費小;快排對於基本類型均具有最快速度。快速排序選取樞紐元的時候采用三數取中,切勿采用首元素。 5.桶排序:排序的數小於整數M,實例化一個M維的數組初值為0,依次加入桶,再倒回去。 6.基數排序:排序數組有n 個元素,實例化一個包含10個list的數組(相當於n個桶0123456789),依次從個位數到最高位把n個數放入桶中然後再倒回原數組,每次要清空list。
再談排序與圖論算法