排序演算法總結

2021-07-31 22:11:27 字數 1368 閱讀 4964

排序的穩定性

經過對總分的降序排序後,總分高的排在前列。,此時對於令狐沖和張無忌而言,未排序時是令狐沖在前,那麼他們總分排序後,分數相等的令狐沖依然應該在前,這樣才算是穩定的排序,如果他們二者顛倒了,則此排序是不穩定的了。

排序演算法總結

根據排序過程中借助的主要操作,我們將內排序分為:插入排序、交換排序、選擇排序和歸併排序四類。

將七種演算法的各種指標進行對比

從演算法的簡單性來看,我們將七種演算法分為兩類:

簡單演算法:冒泡、簡單選擇、直接插入。

改進演算法:希爾、堆、歸併、快速。

從平均情況來看,顯然最後三種改進演算法要勝過希爾排序,並遠遠勝過前三種簡單演算法。

從最好情況看,反而冒泡和直接插入排序要更勝一籌,也就是說,如果你的待排序序列總是基本有序,反而不應該考慮四種複雜的改進演算法。

從最壞的情況看,堆排序與歸併排序又強過快速排序以及其他簡單排序

從這三組時間複雜度的資料對比中,我們可以得出這樣乙個認識。堆排序和歸併排序就像兩個參加奧數考試的優等生,心理素質強,發揮穩定。

而快速排序像是很情緒化的天才,心情好時表現極佳,碰到較糟糕環境會變得差強人意。

但是他們如果都來比賽計算個位數的加減法,他們反而算不過成績極普通的冒泡和直接插入。

從空間複雜度來說

,歸併排序強調馬要跑得快,就得給馬吃個飽。快速排序也有相應的空間要求,反而堆排序等都是少量索取,大量付出,對空間要求是o(1)。如果執行演算法的軟體所處的環境非常在乎記憶體使用量多少時,選擇歸併排序和快速排序就不是乙個較好的決策了。

從穩定性來看,歸併排序獨占鰲頭,對於非常在乎排序穩定性的應用中,歸併排序是個好演算法

從待排序記錄的個數上來說,待排序的個數

n越小,採用簡單排序方法越合適。反之,

n越大,採用改進排序方法越合適。這也是為什麼對快速排序優化時,增加了乙個閥值,低於閥值時換作直接插入排序的原因。

對於資料量不是很大而記錄的關鍵字資訊量較大的排序要求,簡單排序演算法是佔優的。另外,記錄的關鍵字資訊量大小對那四個改進演算法影響不大。

總之,從綜合各項指標來說,經過優化的快速排序是效能最好的排序演算法,但是,不同場合我們也應該考慮使用不同的演算法來應付它

排序演算法總結

1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...

排序演算法總結

1 選擇排序 選擇排序的思想是依次從待排序數列中選擇最大 小 的 第二大 小 的等等,然後依次重新排列為有序數列。void selectionsort int a,int n if min i 時間複雜度o n 2 2 歸併排序 void merge int a,int left,int mid,i...

排序演算法總結

學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是 o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...