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