5.选择排序
5.1原理
设原数据为 3 0 1 7 5
找出最小值:0,与第一个值3交换:03175
排除0,剩余数据找出最小值1与第一个值(排除0)交换:01375
重复以上步骤最终有序
5.2代码
void SelectSort(int *arr,int len)
{
int minindex;//最小值下标
for(int i=0,int 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[i];
arr[i]=arr[minindex];
arr[minindex]=tmp;
}
}
}
5.3评价
①时间复杂度O(n^2)空间复杂度O(1)
②不稳定,因为跳跃交换数据
选择排序不快不稳定但是代码好理解