思路
- 從當前未排序的整數中找一個最小的整數,將它放在已排序的整數列表的最後
- 要點:選擇排序選最小的,往左邊選
- 冒泡排序相關博文: https://blog.csdn.net/weixin_42107311/article/details/105248680
- 插入排序相關博文:https://blog.csdn.net/weixin_42107311/article/details/105278546
代碼
#include <iostream>
using namespace std;
void SelectSort(int *list, int n);
int main(){
int a[] = {3,2,6,7,32,123,1,54,241,34};
int len = sizeof(a)/ sizeof(a[0]);
SelectSort(a, len);
for (int k = 0; k < len; k++) {
cout << a[k] << ",";
}
return 0;
}
void SelectSort(int *list, int n){
// 定義掃描次數,每次掃描掃出一個最小的
for (int i = 0; i < n; i++) {
int min = i; // 使用變量標記最小值索引
for (int j = i+1; j < n; j++){
if (list[j] < list[min]){
min = j;
}
}
swap(list[i], list[min]);
}
}
// 輸出
// 1,2,3,6,7,32,34,54,123,241,
總結
比冒泡排序的交換次數減少了,效率略高一點。每次掃描結束後,再進行交換。