八大排序算法之直接选择排序
直接选择排序也属于基本的排序算法,其实现最为直观。假设有一个数列R[0]~R[n-1],首先,从R[0]~R[n-1]找出最小的数,与R[0]交换;其次,在从R[1]~R[n-1]中找出最小的数,与R[1]交换,依次类推,直至结束。
算法原理
- 从数列R[0]~R[n-1]中选出最小的数,与R[0]交换,亦即,序列中最小的数已放置到R[0]
- 以数列R[1]~R[n-1]位基准,选出最小的数,与R[1]交换,数列中次小的数,放置到R[1]
- 循环进行上述操作,直至结束,此时,数列有序
算法分析
直接选择排序时间复杂度为O(n`2)
它是一种不稳定的排序
算法实现
C语言版本实现:
void Select(int *a,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[j]<a[i])
{
temp= a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
测试代码如下:
int main()
{
int i;
int a[11]= {2,1,6,5,8,3,2,9,48,4,-8};
Select(a,11);
for(i=0;i<11;i++)
printf("%d\t",a[i]);
return 0;
}
测试通过!