常見排序演算法

2021-07-02 13:01:28 字數 1480 閱讀 6803

1、插入排序

直接插入排序,是一種最簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的、記錄數增1的有序表。

初始	38	65	27	76	13

i=1 13 選13為監視哨並假設為乙個有序序列

i=2 13 38 待插入元素38>13

i=3 13 38 65 待插入元素65>38

i=4 13 27 38 65 待插入元素13<27<38

i=5 13 27 38 65 76 待插入元素76>65

2、快速排序

氣泡排序

原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,

這樣一趟過去後,最大或最小的數字被交換到了最後一位,。

初始關鍵字	49	38	65	97	76	13	27			

第一趟排序過程:

38 49 65 97 76 13 27 //38和49比較 交換順序

38 49 65 97 76 13 27 //49和65比較 不交換順序

38 49 65 97 76 13 27 //65和97比較 不交換順序

38 49 65 76 97 13 27 //97和76比較 交換順序

38 49 65 76 13 97 27 //97和13比較 交換順序

38 49 65 76 13 27 97 //97和27比較 交換順序

第一趟排序 38 49 65 76 13 27 97

第二趟排序 38 49 65 13 27 76 97

第三趟排序 38 49 13 27 65 76 97

第四趟排序 38 13 27 49 65 76 97

第五趟排序 13 27 38 49 65 76 97

快速排序

3、選擇排序法

簡單選擇排序法

與冒泡法比較。選擇排序每一趟,只交換一次。

簡單選擇排序法	

min(最小值下標),內層迴圈結束後比較min與i是否相等,不相等交換,相等不交換。

外層迴圈下標 i=1至i=5

內層迴圈下標 j=i+1至j=6

初始關鍵字 9 1 5 8 3 7

第一趟排序 1 9 5 8 3 7 i=1 min=1,j=2開始j++內層迴圈結束 min=2 交換順序

第二趟排序 1 3 5 8 9 7 i=2 min=2,j=3開始j++內層迴圈結束 min=5 交換順序

第三趟排序 1 3 5 8 9 7 i=3 min=3,j=4開始j++內層迴圈結束 min=3 不交換順序

第四趟排序 1 3 5 7 9 8 i=4 min=4,j=5開始j++內層迴圈結束 min=6 交換順序

第五趟排序 1 3 5 7 8 9 i=5 min=5,j=6開始j++內層迴圈結束 min=6 交換順序

常見排序演算法

一.選擇排序 1.概念 每次從無序的子陣列裡面選擇最小的數,放在有序區的後面 既與無序區的首元素交換 不穩定排序 時間複雜度o n 2 輔助儲存o 1 2.實現 int selection sort int a,int len len為陣列元素個數 二.氣泡排序 1.概念 重複訪問數列n 1次,每次...

常見排序演算法

排序演算法作為常用的基本演算法,今天就來總結一下各種經典排序演算法,這裡只貼出 對演算法的文字描述可以在課本或其它部落格上找到很多詳盡的敘述,這裡直接上 而不是常見演算法書上的偽 希望對正在努力學資料結構與演算法的朋友們有幫助 1 氣泡排序 void bubblesort t a,int n if ...

常見排序演算法

最優 o n 最差 o n 2 平均 o n 2 空間 o 1 穩定排序 插排的思路是保證遍歷到每個元素時,該元素前面的序列都是有序的。基於這個前提,我們將遍歷到的新元素和它前面的序列相比對,然後將這個元素插入到適當的位置,使得這個包含新元素的序列也是有序的。雖然外層遍歷只要o n 時間,但是因為找...