排序問題總結

2021-06-18 21:00:57 字數 2897 閱讀 5121

主要講的是直接插入排序的方法:

思路是: 將第

i個記錄插入到已經有序的

i-1個記錄中(其中

i>1,

因為當i=1

時記錄為乙個有序記錄,不用進行插入)

具體步驟:

給出待排序記錄

第一回合:

i=2(值38

插入到45中)

則有序數列為:

38,45

第二回合:

i=3(值66

插入到有序數列中

)則有:

38,45,66

第三回合:

i=4(值90

插入到有序數列中

)則有:

38,45,66,90

第四回合:

i=5(值88

插入到有序數列中

)則有:

38,45,66,88,,90

第五回合:

i=6(值10

插入到有序數列中

)則有:

10,38,45,66,88,90

第六回合:

i=7(值25

插入到有序數列中

)則有:

10,25,,38,45,66,88,90

主要講了氣泡排序和快速排序

思路是:

從第乙個記錄開始,第i個和

i+1個記錄進行比較,若

i>i+1

則交換兩個值

具體步驟:

給出待排序記錄

第一回合:進行交換的兩個值為

45,38 

需交換得:

38,45

第二回合,進行交換的兩個值為

45,66 

需交換得:

45,66

第三回合,進行交換的兩個值為

66,90 

需交換得:

66,90

第四回合,進行交換的兩個值為

90,88 

需交換得:

88,90

第五回合,進行交換的兩個值為

90,10 

需交換得:

10,90

第六回合,進行交換的兩個值為

90,25 

需交換得:

25,90

第一趟排序結束:順序為:

38,45,66,88,10,25,90

第二趟的回合與第一趟類似,

得出排序結果是:

38,45,66,10,25,88,90

第三趟排序結果:

38,45,10,25,66,88,90

第四趟排序結果:

38,10,25,45,66,88,90

第五趟排序結果:

10,25,38,45,66,88,90結束

2、快速排序

思路是:

是氣泡排序的優化,到現在為止還不知道該如何用語言來描述這個過程

具體步驟:

給出待排序記錄

取出45

作為初始比較的資料則有:

第一回合

:25,38,66,90,88,10,25

第二回合

:25,38,66,90,88,10,66

第三回合

:25,38,10,90,88,10,66

第四回合

:25,38,10,90,88,90,66,

第五回合

:25,38,10,88,88,90,66

此時第四位與第五位相同

則將45

放到第四位

第一趟排序結束有

:25,38,10,45,88,90,66

然後分別對

25,38,10

和88,90,66

進行快速排序詳細步驟有:對於

25,38,10

第一回合有

:10,38,10

第二回合有

:10,38,38   

得出:10,25,38

對於88,90,66

第一回合有

:66,90,66

第二回合有

:66,90,90 

得出:66,88,90

所以最終結果有

:10,25,38,45,66,88,90

基本思想是:每一次在

n-i+1

個記錄中選取鍵值最小的記錄作為有序序列的第

i個記錄

1、直接選擇

思路是:第

i次選擇操作中,通過

n-i次比較,從記錄中獲得最小值,並和第

i個記錄進行交換

具體實現步驟:

給出待排序記錄

注:(藍色字型為有序部分)

第一趟排序結果:

10,38,66,90,88,45,25

第二趟排序結果:

10,25

,66,90,88,45,38

第三趟排序結果:

10,25,38,

90,88,45,66

第四趟排序結果:

10,25,38,45

,88,90,66

第五趟排序結果:

10,25,38,45,66,

90,88

第六趟排序結果:

10,25,38,45,66,88,90

所以最終結果是:

10,25,38,45,66,88,90

2、堆排序

思想是:借用二叉樹,任一結點的值都不大(小)於它的兩個孩子的值

具體實現:

第一步:將給定數值建成一顆完全二叉樹

第二步:從n/2

開始,把這些元素以上的結點,進行篩選成堆

篩選成堆的具體實現是:

如果其父結點的大於任一子結點,則進行交換。使得父節點小於任一子節點。

介紹了這麼多排序的實現方法,每次看到概念都是暈乎乎的,還是自己實現起來比較清晰。

LeetCode 旋轉排序陣列問題總結

前言 所謂旋轉排序陣列,就是指按照公升序排序的陣列在預先未知的某個點上進行了旋轉 例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 而leetcode上與此相關的的題共有三道,下面就具體來分析一下這三題。搜尋旋轉排序陣列 leetcode 33題 搜尋乙個給定的目標值,如...

排序總結 氣泡排序

created by liyuanshuo on 2017 3 17.include bubble sort.h 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較 大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要...

排序總結 桶排序

created by liyuanshuo on 2017 3 18.include include bucket sort.h 桶排序 桶排序 bucket sort 假設輸入資料服從均勻分布,然後將輸入資料均勻地分配到有限數量的桶中,然後對每個桶再分別排序,對每個桶再使用插入排序演算法,最後將每...