10種排序演算法的對比分析

2021-09-11 17:06:56 字數 1236 閱讀 8894

效率太低,通過冒泡可以掌握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演算法最大的弊端是它無法適...