經典排序演算法總結

2021-07-28 15:48:59 字數 864 閱讀 5435

排序演算法是離散數學和資料結構學科最基本的演算法,雖然知道這些排序演算法的名字,但是一直沒有研究過它們的實現原理。現在把它們收集起來,並一一親自實現,來加深對排序演算法的理解。

1,氣泡排序:最簡單的排序演算法,從第乙個元素開始比較相鄰元素大小,如果前邊元素大於後邊元素則交換位置,否則將下標移到下乙個元素,一直到最後乙個元素為止;然後進行其他輪次的比較,直到沒有元素交換結束。

另外一種改進的氣泡排序演算法為,將上一輪次比較中,最後一次元素交換的位置標記,作為下面一輪次比較的終點。

2,插入排序:假設元素m之前的所有元素已排好順序,則在排好序的子序中查詢m的位置,然後插入m,得到乙個增量的子序,迴圈下標到最後乙個元素為止。

3,選擇排序:從未排序的序列中選擇最小的元素,與第乙個元素交換位置,然後對剩餘的未排序子序進行相同的操作。

4,快速排序:快速排序採用分治遞迴的思想,首先選取乙個參考元素(比如第乙個元素),然後將剩餘的元素分成兩部分:一部分所有元素都小於參考元素,一部分所有元素都大於參考元素,然後將參考元素插入到分界點;對於分開的兩部分,遞迴採用同樣的方法獲取分類,最終將獲取到完整排序的數列。

5,歸併排序:基本原理是將兩個已排序的數列歸併成乙個排序的數列,我採用了三元體的方式,在合併時做到整體插入。

6,二叉排序樹:基本思想是將序列中的數讀入乙個二叉樹,在讀入時遵循一定的規則:比如,如果二叉樹的乙個節點有左子節點,那麼左子節點一定比父節點的值小;如果乙個節點有右子節點,那麼右子節點一定比父節點的值大。在二叉排序樹製造完成後,通過採用中序遍歷的方法讀取二叉樹節點的值到序列中,就可以得到乙個公升序序列。

7,堆排序:基本原理是每次構造乙個小頂堆,那麼堆的根節點就是序列的最小值,然後利用剩餘的元素再構造乙個小頂堆,獲得第二個較小的元素,遞迴執行直到剩餘1個元素返回,最終將得到公升序排列的序列。

經典排序演算法總結

插入排序 選擇排序 歸併排序 排序方法 平均情況 最好最差 空間複雜度 穩定性氣泡排序o n2 o n 2 o n o n o n2 o n 2 o 1 o 1 穩定快速排序o nlogn o nlog n o nlogn o nlog n o n2 o n 2 o nlogn o nlog n 不...

經典排序演算法複習總結

前置定義 in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序。stable sort 插入排序 氣泡排序 歸併排序 計數排序 基數排序 桶排序。unstable sort ...

經典排序演算法總結篇

首先回顧下各種排序的主要思路 一 氣泡排序 示例 public static void bublesort int a 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,...