算法思想:
每次都从待排序中选择一个最小的和待排序中的第一个数据交换(最大的也可以,只不过跟待排序的最后一个数据交换)
代码实现:
//选择排序
void SelectSort(int* arr, int len)
{
int Index_min,tmp;
for (int i = 0; i < len; i++)
{
Index_min = i;
for (int j = i + 1; j < len; j++)
{
if (arr[j] < arr[Index_min])
{
Index_min = j;
}
}
if (Index_min != i)
{
tmp = arr[i];
arr[i] = arr[Index_min];
arr[Index_min] = tmp;
}
}
}
总结:
时间复杂度O(n^2),空间复杂度O(1),不稳定;
快速排序如果完全有序就退化为选择排序