选择排序时间复杂度:O(N^2),空间复杂度O(1)
选择排序思想:通过每趟排序,寻找到最大(最小)的数的下标,然后交换每趟排序的起始点的数和这个数。
上代码:
void SelectSort_incline(int* arr, int n)
{
//i从0开始,结尾为n-1或者n均可
for (int i = 0; i < n - 1; i++)
{
//定义k,来寻找每一趟筛查的最小数的下标
int k = i;
for (int j = i; j < n; j++)
{
//从arr[i]遍历到arr[n-1]
//因为每趟排序后,最小的数已经排到前面了,将不再参与排序。故从arr[i]开始遍历
//如果arr[j]<arr[k].就将这个数的下标给k
if (arr[j] < arr[k])
{
k = j;
}
}
//找到每趟筛查的最小数的下标,然后交换每趟排序的起始点和这个数
Swap(&arr[i], &arr[k]);
}
}
核心思想:找最大或最小的数的下标,然后交换。