选择排序
上一次我们谈到了冒泡排序,今天我们谈下选择排序。
与冒泡排序相比,选择排序的平均时间复杂度比冒泡排序稍高。
基本思想:
每一趟从待排序的元素中选出最小(或者最大)的一个元素顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法,N个记录的文件的直接选择排序可经过N-1趟直接选择排序得到有序结果。
示例如下:
定义数组a[]={13,4,8,2,11,670}
第一趟:a[]={0,4,8,2,11,67,13}
第二趟: a[]={0,2,8,4,11,67,13}
第三趟:a[]={0,2,4,8,11,67,13}
第四趟:a[]={0,2,4,8,11,67,13}
第五趟:a[]={0,2,4,8,11,67,13}
第六趟:a[]={0,2,4,8,11,13,67}
算法描述如下:
int a[n];//定义数组,长度为n
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}