演算法學習(五) 基本排序演算法總結

2021-07-23 13:22:22 字數 1444 閱讀 5950

前幾天學習幾個基本的排序演算法,下面來總結一下

在維基百科上有排序演算法的一張圖,紅線是我之前總結學習的。

從我們學習的排序演算法中可以分為兩類:簡單排序有冒泡、選擇、插入排序;改進演算法有希爾、堆排序、歸併排序和快速排序。

快速排序是冒泡的公升級版,屬於交換排序;希爾排序是直接插入排序的公升級,屬於插入排序類;堆排序相當於簡單選擇排序的公升級,屬於選擇排序類。

我自己做了幾張這幾種排序演算法的動態圖,以加深理解。原始圖是從 上擷取的,我做成了動態的。

1.氣泡排序

2.簡單選擇排序

3.直接插入排序

4.歸併排序

5.堆排序

6.快速排序

演算法穩定性是指相等鍵值的紀錄維持相對次序。比如在序列中1、2號位置的元素具有相等的值,在排序前,1在2的前面,在排序後,1是否還在2的前面?儘管這是2個相等值的元素。穩定是指1、2的相對順序不會發生變化,否則就是不穩定的演算法。

從前面幾個演算法可以知道,穩定的排序演算法有:冒泡、選擇、插入、歸併排序,而希爾、堆排序和快速排序都是不穩定的演算法。

氣泡排序(bubble sort)— o(n2)

插入排序(insertion sort)—o(n2)

歸併排序(merge sort)—o(n log n);需要o(n)額外空間

選擇排序(selection sort)—o(n2)

希爾排序(shell sort)—o(n log2 n)如果使用最佳的現在版本

堆排序(heap sort)—o(n log n)

快速排序(quick sort)—o(n log n)期望時間,o(n2)最壞情況;對於大的、隨機數列表一般相信是已知最快的排序

演算法學習總結 五 快速排序

一 演算法簡介 快速排序 quicksort 是對氣泡排序的一種改進。它的基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。二 演算法描述...

排序演算法學習總結

一.氣泡排序 簡單來說就是兩兩比較,把大的數換到後面,小的數換到前面,一輪比較後,最大的數就排到了最後面,總共要比較n 1輪,氣泡排序是一種穩定排序演算法,即使兩個數相等,也不會破壞它們原有位置。二.快速排序 簡單來說就是選定乙個基準值,一般選取最後乙個數為基準值,然後定義兩個引數start,end...

演算法學習(一) 基本排序演算法

原理 序列中的元素兩兩比較,小 大 的元素交換到大 小 的元素前面,就像氣泡從水中浮出一樣。優化後的氣泡排序 public void bubblesort int arr 演算法時間複雜度 o n 2 原理 從左至右遍歷,找到最小 大 的元素,然後與第乙個元素交換 從剩餘未排序元素中繼續尋找最小 大...