简介
选择排序的排序思想就和它的名字一样,每次通过从无序的数组中选择出一个最小的(要求升序排列)数把他放到数组的最前面。再依次找次小的数字放到数组无序区的最前。直到数组为有序。
算法描述
1.从数组的第一个数字开始,往后遍历,相互比较,找到最小的数;
2.把最小的数归到数组的第一个位置,归好位的数字为有序区,后面为有序区;
3.以无序区为基准重复步骤1~2,直到数组有序。
时间复杂度:O(N^2)
代码实现
void SelectSort(int* a,int len)
{
int i = 0;
int j = 0;
for (i = 0; i < len; ++i)
{
int min = a[i];
int index = i;
int tmp = 0;
for (j = i + 1; j < len; ++j)
{
if (min > a[j])
{
min = a[j];
index = j;
}
}
tmp = a[i];
a[i] = min;
a[index] = tmp;;
}
}
int main()
{
int a[] = {1,8,3,6,5,2,4,9};
SelectSort(a, sizeof(a) / sizeof(a[0]));
for (int i = 0; i < (sizeof(a) / sizeof(a[0]));i++)
cout << a[i] << ' ';
return 0;
}