幾種常用排序演算法 一

2022-08-26 18:15:12 字數 1712 閱讀 7837

八大常用排序演算法詳細分析 包括複雜度:

排序有可以分為以下幾類:

(1)、交換排序:氣泡排序、快速排序

(2)、選擇排序:直接選擇排序、堆排序

(3)、插入排序:直接插入排序、希爾排序

(4)、歸併排序

(5)、基數排序(桶排序)

顧名思義,氣泡排序就是用氣泡從下往上冒的原理,將氣泡(較小或較大的數)依次往前移。

具體做法(公升序):設總共有n個元素,則至少需要進行n-1次冒泡。一次排序排序中,若前乙個元素大於後乙個元素,則交換兩個元素,然後在依次判  斷後面兩兩相鄰元素大小並進行交換。進行完n-1輪冒泡後,排序完成。

c++演算法實現:

void bubble_sort(int a,int

len) }}

}

氣泡排序優化:若某一次排序中沒有資料進行交換,則排序完成,直接停止排序。所以**可以優化。

void select_sort(int a, int

len)

}}

直接選擇排序的原理比較簡單,就是每一次從數列中選擇乙個最大(或最小)的元素,將其依次放入陣列。

具體做法:在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換;然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。

c++演算法實現:

void select_sort(int a, int

len)

}

直接插入排序的基本思想是:從第二個元素開始,每一步把前面的元素排成乙個有序的數列,然後把這個元素有序地插入到前面有序的數列中,直到全部資料插入完畢為止。 

假設有一組n個元素無序序列: 

(1) 將這個序列的第乙個元素視為乙個有序序列; 

(2) 依次把第2個到第n個元素, 插入到這個有序序列中; 

c++演算法實現:

void insert_sort(int a,int

len)}}

上面這種插入排序還可以進行優化,上面的方法需要通過中間變數進行很多次的交換,我們可以先找到待插入元素應該插入的位置後,將該位置後的元素依次後移,在將待插入元素插入它應該在的位置上,這樣就能減少很多的額外交換操作。

直接插入演算法優化:

void insert_sort(int a,int

len)

}

希爾排序是一種插入排序演算法,又稱作縮小增量排序。是對直接插入排序演算法的改進。

其基本思想是:

先取乙個小於n的整數作為第乙個增量,把全部資料分成個組。所有距離為的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量重複上述的分組和排序,直至所取的增量,即所有記錄放在同一組中進行直接插入排序為止。該方法實質上是一種分組插入方法。

c++演算法實現:

void shell_sort(int a, int

len)

a[k] =temp;}}

d /= 2;//

將每組兩兩合併,再進行排序

}}

幾種常用排序演算法

一 氣泡排序 已知一組無序資料a 1 a 2 a n 需將其按公升序排列。首先比較a 1 與a 2 的值,若a 1 大於a 2 則交換兩者的值,否則不變。再比較a 2 與a 3 的值,若a 2 大於a 3 則交換兩者的值,否則不變。再比較a 3 與a 4 依此類推,最後比較a n 1 與a n 的值...

常用幾種排序演算法

常用的幾種排序演算法 選擇排序方法時,除了基本實現的要求外,還應當注重所選擇演算法的時間 空間複雜度既執行效率,另外在實際工作中往往還要注意演算法的穩定性 排序後相同元素的相對位置是否發生改變 等。一 冒泡 插入 選擇 二 快排 歸併 1 氣泡排序 氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對...

幾種常用的排序演算法

介紹 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n 2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...