思路
- 从当前未排序的整数中找一个最小的整数,将它放在已排序的整数列表的最后
- 要点:选择排序选最小的,往左边选
- 冒泡排序相关博文: 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,
总结
比冒泡排序的交换次数减少了,效率略高一点。每次扫描结束后,再进行交换。