(三)排序演算法之選擇排序

2021-10-08 08:37:40 字數 1051 閱讀 5642

選擇排序和之前說的氣泡排序插入排序套路差不多,都是將陣列分隔為已排序未排序子陣列,主要區別在於元素選取放入選擇排序是從未排序陣列中選最小(或最大)的乙個放入已排序的陣列後。

下面用 | 分隔已排序和未排序陣列,如:

待排序資料: 7, 0,2,8,1 (一開始有序陣列是空的)

一次排序

0| 7, 2,8,1 (將最小數 0放入到有序陣列()後)

二次排序

0,1| 7, 2,8 (將最小數 1放入到有序陣列(0)後)

三次排序

0,1,2| 7,8 (將最小數 2放入到有序陣列(0,1)後)

四次排序

0,1, 2,7| 8 (將最小數 7放入到有序陣列(0,1,2)後)

五次排序

0,1, 2, 7,8(將最小數 8放入到有序陣列(0,1,2,7)後)

選擇排序演算法時間複雜度是 o(n^2)

void

selectsorted

(vector<

int>

& nums)

}// 通過交換的方式,將未排序的最小值,放入已排序陣列(0~i-1)最後

temp = nums[index]

; nums[index]

= nums[i]

; nums[i]

= temp;

}}

三 排序演算法

所有例子都是公升序排序。資料分成兩部分 已排序和待排序。排序過程中,資料移動分為兩種 1.直接移動 移動資料的儲存位置,消耗時間 2.邏輯移動 改變指向這些資料的指標 特點 遍歷待排序資料,把最小值與起始資料 最左邊 交換位置 次數 第一輪n 1次,第k輪n k次 步驟 1.如果待排序資料大於0,則...

演算法基礎(三) 排序

我們先來看看幾種排序的結構圖 排序是否穩定 比如 排序前 25 7 6 4 29 3 排序後 22 3 4 5 6 7 9 排序前藍2在紅 2前面,排序後藍 2依然在紅 2前面,則所用的排序方法是穩定的。如果排序後,紅 2有可能在藍 2前面,那麼所用的排序方法是不穩定的 下面說說前面幾種排序的時間複...

STL 常用演算法(三)排序演算法

演算法簡介 功能描述 函式原型 include include void myprint int val void test01 intmain 函式原型 include include include class myprint void test01 for each v.begin v.end...