主要講的是直接插入排序的方法:
思路是: 將第
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 假設輸入資料服從均勻分布,然後將輸入資料均勻地分配到有限數量的桶中,然後對每個桶再分別排序,對每個桶再使用插入排序演算法,最後將每...