选择排序是不稳定排序,平均算法复杂度和最坏算法复杂度为:O(n^2);空间复杂度为O(1);
稳定性说明:
举个例子,序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法
#include<stdio.h>
void select_sort(int a[],int n)
{
int i,j,pos,tmp;
for(i=0;i<n;i++)
{
pos=i;
for(j=i+1;j<n;j++) //选取第i趟的最小元素
{
if(a[pos]>a[j])
{
pos=j;
}
}
tmp=a[pos];
a[pos]=a[i];
a[i]=tmp;
}
}
void main()
{
int a[]={49,38,65,97,76,13,27,49};
int n=sizeof(a)/sizeof(a[0]);
select_sort(a,n);
for(int i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
}