效率太低,通過冒泡可以掌握swap。
效率較低,但經常使用它內部的迴圈方式來找最大值和最小值。
雖然平均效率低,但在序列基本有序時,它很快,所以也有其適用範圍。
是插入排序的改良,對空間思維訓練有幫助。
快排是軟體工業中最常見的常規排序法,其雙向指標掃瞄和分割槽演算法是核心。
往往用於解決類似問題,特別地partition演算法用來劃分不同性質的元素,
partition->selectk,也用於著名的top問題
o(nlgn),但是如果主元不是中位數的話,特別地如果每次主元都在陣列區間的一側,複雜度將退化為n²
工業優化:三點取中法,絕對中值法,小資料量用插入排序
快排重視子問題拆分
空間換時間——逆序對數,
歸併重視子問題的解的合併
用到了二叉堆資料結構,是繼續掌握樹結構的起手式。=插排+二分查詢
上面7種都是基於比較的排序,可證明它們在元素隨機順序情況下最好是nlgn的,用決策樹證明
下面三個是非比較排序,在特定情況下會比基於比較的排序要快:可以說是最快的:o(n+k),k=maxof(sourcearr),用它來解決問題時必須注意如果序列中的值分布非常廣(最大值很大,元素分布很稀疏),
空間將會浪費很多
所以計數排序的適用範圍是:序列的關鍵字比較集中,已知邊界,且邊界較小
先分桶,再用其他排序方法對桶內元素排序,按桶的編號依次檢出。(分配-收集)
用它解決問題必須注意序列的值是否均勻地分布在桶中。
如果不均勻,那麼個別桶中的元素會遠多於其他桶,桶內排序用比較排序,極端情況下,全部元素在乙個桶內,還是會退化成nlgn。
其時間複雜度是:時間複雜度: o(n+c),其中c=n*(logn-logm),約等於n*lgn
n是元素個數,m是桶的個數。
kn級別(k是最大數的位數)是整數數值型排序裡面又快又穩的,無論元素分布如何,
只開闢固定的輔助空間(10個桶)
對比桶排序,基數排序每次需要的桶的數量並不多。而且基數排序幾乎不需要任何「比較」操作,而桶排序在桶相對較少的情況下,桶內多個資料必須進行基於比較操作的排序。因此,在實際應用中,對十進位制整數來說,基數排序更好用。
最短路徑演算法對比分析
最短路徑演算法對比分析 floyd dijkstra bellman ford 佇列優化的bellman ford 空間複雜度 o n 3 o m o m o m 時間複雜度 o n 3 o m n logn o nm o nm 適用情況 稠密圖和頂點關係密切 稠密圖和頂點關係密切 稀疏圖和邊關係密...
最短路徑演算法對比分析
我們選擇最短路徑演算法時,要根據實際需求和每一種演算法的特性,選擇合適的演算法。floyd演算法雖然總體時間複雜度高,但是可以處理帶有負權邊的圖 但不能含有負權迴路 並且均攤到每一點的對上,在所有的演算法中還是屬於較優的。另外floyd演算法較小的編碼複雜度也是它的一大優勢。所以,如果要求的是所有點...
最短路徑演算法對比分析
floyd演算法 雖然總體時間複雜度高,但是可以解決負權邊,並且均攤到每一點對上,在所有演算法中還是屬於較優的。另外,floyd演算法較小的編碼複雜度也是它的一大優勢。所以,如果要求的是所有點對間的最短路徑,或者如果資料範圍較小,則floyd演算法比較合適。dijkstra演算法最大的弊端是它無法適...