推荐阅读:https://blog.csdn.net/weixin_60702024/article/details/141176673
编写函数,实现对顺序表的选择排序。
实现代码
#include <algorithm>
void selectSort(vector<int>& a){
int n=a.size();
int minIndex; // 最小值的下标
for(int i=0;i<n-1;i++){
// 初始化最小值下标为
minIndex = i;
for(int j=i+1; j<n; j++){
if(a[j] < a[minIndex]){
minIndex=j;
}
}
swap(a[i], a[minIndex]);
}
}
分析
在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。
其实现也很简单,如果从细节去看,代码中的变量i
有三个作用:
- 作为循环的计数器,保证代码执行n-1次循环(注意此处的循环无法像冒泡排序一样通过定义
排序完成标志
来提前退出) - 作为指针,指向找到的最小元素将要被放置的位置
- 作为排序完成部分和未完成部分的分界线——每趟扫描时区间
[0, i)
内的元素已经完成排序。