一、选择排序的原理:
选择排序与冒泡排序类似,也是每次排序选出最大或最小的元素。比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。
二、选择排序的实现:
void select(int a[],int n)
{ int k;
int t;
for(int i=0;i<n-1;i++)
{k=i;
for(int j=i;j<n;j++)
if(a[j]<a[k])k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
三、算法分析:
1.选择排序的时间复杂度为o(n^2),不适用于大型数组
2.选择排序的空间复杂度为o(1)
3.算法不稳定,有位置的交换