选择排序函数及复杂度分析

选择排序

     基本思想:选出数组中的最小元素,将它与第一个元素交换,依次找出次小元素,并将它与第二个元素交换。按照此方法依次进行下去,直到数组排完序。

具体过程如下:
void SelectionSort(int a[],int size)
{
    for(int i=0;i<size-1;++i){
    int tmpMin=i;
    for(int j=i+1;j<size;++j){
       if(a[j]<a[tmpMin])
           tmpMin=j;
     }
   int tmp=a[i];
   a[i]=a[tmpMin];
   a[tmpMin]=tmp;
 }
}

选择排序的缺点:运行时间对文件中已有序的部分依赖较少。

适应范围:对于元素较大,关键字较小的文件,其他方法移动数据的步数比选择排序多。

时间复杂度分析:外重循环体执行(size-1)次,执行第二个for循环判断需要执行(size-i)次。i从0变到(size-2),执行2+3+....+size次,即(size+1)*size/2-1次,时间复杂度为O(size^2)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值