时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:不稳定
原理:从待排序列中选择一个最小值放置于数组首位,与冒泡排序法相比减少了移动的次数。
代码:
/*
大学课程中各种排序算法的实现
语言:C++
作者:Kylin.C
*/
#include<iostream>
#include<vector>
using namespace std;
//简单选择排序
void SimpleSelectSort(vector<int> &arr)
{
if (arr.size() == 0)
return;
int index = 0;
for (int i = 0; i < arr.size(); ++i)
{
index = i;
//找到剩余数组元素中最小值的下标
for (int j = i + 1; j < arr.size(); ++j)
{
if (arr[j] < arr[index])
index = j;
}
//如果下标不等于i则进行一次交换
if (index != i)
swap(arr[i], arr[index]);
}
}
int main()
{
vector<int> arr{ 4, 2, 1, 4, 3, 8, 6, 5, 6 };
//BubbleSort(arr);
SimpleSelectSort(arr);
for (auto a : arr)
cout << a << " ";
cout << endl;
system("pause");
return 0;
}