一、快速排序 快速排序(英語:Quicksort),又稱划分交換排序(partition-exchange sort),通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此 ...
一 歸並排序 歸並排序是建立在歸並操作上的一種有效的排序算法。該算法是采用分治法 Divide and Conquer 的一個非常典型的應用。將已有序的子序列合並,得到完全有序的序列 即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合並成一個有序表,稱為 路歸並。 所謂 分 ,指的是將一個亂序數列不斷進行二分,得到許多短的序列。 所謂 治 ,指的是將這些短序列進行兩兩合並,然后將合並的結果 ...
2020-06-16 23:15 1 2253 推薦指數:
一、快速排序 快速排序(英語:Quicksort),又稱划分交換排序(partition-exchange sort),通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此 ...
一、動圖演示 二、思路分析 歸並排序就是遞歸得將原始數組遞歸對半分隔,直到不能再分(只剩下一個元素)后,開始從最小的數組向上歸並排序 1. 向上歸並排序的時候,需要一個暫存數組用來排序, 2. 將待合並的兩個數組,從第一位開始比較,小的放到暫存數組,指針向后移, 3. ...
一、動圖演示 二、思路分析 例如從小到大排序: 1. 從第二位開始遍歷, 2. 當前數(第一趟是第二位數)與前面的數依次比較,如果前面的數大於當前數,則將這個數放在當前數的位置上,當前數的下標-1, 3. 重復以上步驟,直到當前數不大於前面的某一個數為止 ...
一、動圖演 二、思路分析 基數排序第i趟將待排數組里的每個數的i位數放到tempj(j=1-10)隊列中,然后再從這十個隊列中取出數據,重新放到原數組里,直到i大於待排數的最大位數。 1.數組里的數最大位數是n位,就需要排n趟,例如數組里最大的數是3位數,則需要排3趟。 2. ...
一、動圖演示 二、思路分析 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序;隨着增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,算法便終止。 簡單插入排序很循規蹈矩,不管數組分布是怎么樣的,依然一步一步的對元素 ...
一、動圖演示 二、思路分析 1. 第一個跟后面的所有數相比,如果小於(或小於)第一個數的時候,暫存較小數的下標,第一趟結束后,將第一個數,與暫存的那個最小數進行交換,第一個數就是最小(或最大的數) 2. 下標移到第二位,第二個數跟后面的所有數相比,一趟下來,確定第二小 ...
一、動圖演示 二、思路分析 先來了解下堆的相關概念:堆是具有以下性質的完全二叉樹:每個結點的值都大於或等於其左右孩子結點的值,稱為大頂堆;或者每個結點的值都小於或等於其左右孩子結點的值,稱為小頂堆。如下圖: 同時,我們對堆中的結點按層進行編號,將這種邏輯結構映射 ...
一、動圖演示 二、思路分析 1. 相鄰兩個數兩兩相比,n[i]跟n[j+1]比,如果n[i]>n[j+1],則將連個數進行交換, 2. j++, 重復以上步驟,第一趟結束后,最大數就會被確定在最后一位,這就是冒泡排序又稱大(小)數沉底, 3. i++,重復以上步驟 ...