選擇排序
簡單選擇排序
比較+交換
從待排序序列中,找到關鍵字最小的元素;
如果最小元素不是待排序序列的第一個元素,將其和第一個元素互換;
從餘下的 N - 1 個元素中,找出關鍵字最小的元素,重複(1)、(2)步,直到排序結束。
堆排序
任意的葉子節點小於(或大於)它所有的父節點
對此,又分爲大頂堆和小頂堆。
大頂堆要求節點的元素都要大於其孩子,小頂堆要求節點元素都小於其左右孩子,兩者對左右孩子的大小關係不做任何要求。
交換排序
冒泡排序
1、將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素;( 第一輪結束後,序列最後一個元素一定是當前序列的最大值;)對序列當中剩下的n-1個元素再次執行步驟1
2、動圖展示:
3、代碼展示:
template<class T>
void BubbleSort(T[], int n) {
for (int i = 1; i < n; i++) { //共進行n - 1趟排序:從1到n-1,逐步縮小待排序列
for (int j = n - 1; j >= i; j--) { //反向檢測,檢查是否逆序
if(T[j] > T[j - 1]){ //發生逆序,交換元素的位置
T temp = T[j];
T[j] = T[j - 1];
T[j - 1] = temp;
}
}
}
}
軟考的過程中,分享過後,對於排序方法和其代碼都有了一定的理解,開心吶
·
·
快速排序
基本思想:通過一趟排序將待排的記錄劃分爲獨立的兩部分,稱爲前半區和後半區。
前半區中記錄的關鍵字均不大於後半區記錄的關鍵字,然後再分別對這兩部分記錄繼續進行快速排序,從而使整個序列有序。