选择排序
2.1选择排序的思想
- 先遍历一遍整个待排序数据,找到当前最大的值的 位置 。
- 将标记的最大值与当前最后一个元素交换。
- 重复上述过程,直到只剩下一个数据。
- 上面的步骤每做一次,下一次就少遍历一个数据(本次找到的最大值)
- 选择排序执行的趟数:数据元素的个数 len - 1
2.2选择排序的实现
/*
时间复杂度: O(n^2)
空间复杂度: O(1)
稳定性: 不稳定
*/
void SelectSort(int *arr, int len)
{
for (int j = 0; j < len - 1; ++j)
{
int maxIndex = 0; // 最大值的下标
for (int i = 0; i < len - j; ++i)
{
if (arr[i] > arr[maxIndex])
{
maxIndex = i;
}
}
Swap(&arr[maxIndex], &arr[len - 1 - j]);
}
}