選擇排序(簡單選擇排序,堆排序)&交換排序(冒泡排序,快速排序)

選擇排序

簡單選擇排序

比較+交換

從待排序序列中,找到關鍵字最小的元素;
如果最小元素不是待排序序列的第一個元素,將其和第一個元素互換;
從餘下的 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;
			}
		}
	}
}

軟考的過程中,分享過後,對於排序方法和其代碼都有了一定的理解,開心吶

·
·
快速排序
基本思想:通過一趟排序將待排的記錄劃分爲獨立的兩部分,稱爲前半區和後半區。
前半區中記錄的關鍵字均不大於後半區記錄的關鍵字,然後再分別對這兩部分記錄繼續進行快速排序,從而使整個序列有序。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章