排序算法之——选择排序
算法原理:
1、先遍历一遍整个待排序数据,找到当前最大数据的位置
2、将最大数据标记,与当前最后一个位置元素做交换
3、重复1、2步骤,直到只剩一个数据
4、上述的步骤每遍历一遍,下一次就少遍历一次数据
时间复杂度:
O(n^2)
空间复杂度:
O(1)
稳定性:
因为是将最大数据直接和最后一个数据做交换,所以不稳定
代码实现:
void selectSort(vector<int>& arr)
{
if (arr.empty() || arr.size() < 2) return;
for (int i = 0;i < arr.size();i++)
{
int minIndex = i;
for (int j = i + 1; j < arr.size(); j++)
{
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr[i], arr[minIndex]);
}
}
程序运行过程详图:
程序运行截图: