直接选择排序的动图演示
大致思路代码:
选择排序总体思路解析
代码实现:
void SelectSort(int* arr, int n)
{
int begin = 0;//首位置
int end = n - 1;//末位置
while (begin < end)
{
int maxi = begin, mini = begin;//最大值和最小值的定义,每次循环都让maxi和mini处于首元素
for (int i = begin + 1; i <= end; i++)
{
if (arr[i] > arr[maxi])
{
maxi = i;
}
if (arr[i] < arr[mini])
{
mini = i;
}
}
if (maxi == begin)//为了防止出现交换差错,让maxi成了最小
{
maxi = mini;
}
Swap(&arr[mini], &arr[begin]);
Swap(&arr[maxi], &arr[end]);
++begin;
--end;
}
}
时间复杂度:O(n^2)