演算法總結(二)

2021-09-25 11:18:11 字數 686 閱讀 6024

4、希爾排序

希爾排序是在插入排序之上進行改進的,其做法是根據資料長度來選擇乙個增量,然後進行插入排序,然後再選擇乙個增量,再選擇排序,這樣,每一次排序後,整個資料的順序都會有一定程度的改變,改演算法的時間頻率是logn,也是第乙個將時間頻率由n2降為logn的演算法,其實提公升了一定的效率。

5、歸併排序

歸併排序的思路,先以最小的長度為單位(一般增量為2)擷取陣列,將陣列分為左右兩部分,按照順序以此存入到另乙個陣列中,再替換原陣列;然後擴大增量(一般為2的倍數),再次選取陣列,並存到另乙個陣列中,不斷迴圈此步驟,直至完成排序。

舉個例子,假如有以下陣列,先選擇,再分成2個部分,6和10,然後按照由大到小的順序依次存入到另一陣列,得到,原陣列變成。再擴大增量,將其分為和,按依次存入到陣列中得到。

此演算法的時間頻率同樣是logn,並且最好的情況是n,所以相對希爾演算法效率更高,主要原因是演算法進行過程中,使用到了額外的記憶體空間,相當於以空間換時間的意思。

排序演算法總結(二)

歸併排序 歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。我們一般取中位數,將前後兩部分排序在歸併為乙個序列,遞迴完成。include using namespace std void...

排序演算法總結(二)

歸併排序演算法思想是分而治之。下面將對分而治之演算法排序做乙個簡單描述。歸併排序之分而治之 void sort e,n else 對e插入排序 當k 2的時候,分而治之的排序演算法稱之為歸併排序,嚴格的來說是二路歸併排序,它的空間複雜度是o n 時間複雜度為o nlogn 歸併排序函式用乙個陣列a來...

排序演算法總結 二

排序演算法是一種基本並且常用的演算法。由於實際工作中處理的數量巨大,所以排序演算法對演算法本身的速度要求很高。而一般我們所謂的演算法的效能主要是指演算法的複雜度,一般用o方法來表示。在後面我將給出詳細的說明。對於排序的演算法我想先做一點簡單的介紹,也是給這篇文章理乙個提綱。我將按照演算法的複雜度,從...