算法描述:每次都从待排序中选出一个最小的和待排序中的第一个数据进行交换
时间复杂度,空间复杂度
,并且其不稳定。
比如5,8,5',2,7
在进行一次选择排序的时候会变成2,8,5',5,7,故其不稳定。
代码如下:
#include<stdio.h>
//选择排序
void Selectsort(int* arr, int len)
{
int tmp;
int minindex;//最小值的下标
for (int i = 0; i < len - 1; i++)
{
minindex = i;
for (int j = i + 1; j < len; j++)
{
if (arr[minindex] > arr[j])
{
minindex = j;
}
}
if (minindex != i)//最小值和待排序的第一个是同一个就不交换
{
tmp = arr[minindex];
arr[minindex] = arr[i];
arr[i] = tmp;
}
}
}
void Show(int* arr, int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[] = { 7,6,2,3,1,4,5,8,9,10 };
int len = sizeof(arr) / sizeof(arr[0]);
Selectsort(arr, len);
Show(arr, len);
return 0;
}