选择排序算法
选择排序的思想分析及图解…
其属于:非线性时间比较类排序 中的选择排序
选择排序:(时间复杂度)(稳定性)
算法思想:
记录待排序数组的第一个元素值和其索引,向后遍历判断他是不是最小值(最大值)
如果不是,则更新最小值和其所在位置索引
遍历结束后,若索引更新,则交换首元素与更新后索引位置的值
接下来的待排序数组为除开第一个元素,剩下的数组,按上述相同方法选择出 后替换
直至待排数组大小为一,结束
选择排序动态演示:
代码:
#include<iostream>
#include<vector>
using namespace std;
//选择排序定义
void select_sort(vector<int> &arr)
{
//计算元素个数
int len = arr.size();
for (int i = 0; i < len - 1; ++i)
{
//记录最小值和其索引
int min = arr[i];
int index = i;
for (int j = i + 1; j < len; ++j)
{
//判断最小,并更新最小值和其索引
if (arr[j] < min)
{
min = arr[j];
index = j;
}
}
//当索引改变
//替换
if (index != i)
{
arr[index] = arr[i];
arr[i] = min;
}
}
}
int main()
{
//简单测试
vector<int> arr = { 8,5,9,6,4,5 };
cout << "排序前:";
for (auto a : arr)
cout << a << " ";
select_sort(arr);
cout << "排序后:";
for (auto a:arr)
cout << a << " ";
return 0;
}
点个赞吧!!