数据结构——冒泡排序

基本思想:每趟将记录两两比较,并按前小后大规则交换

对n个元素,需要n-1趟排序,第i趟需要比较n-i次

冒泡排序是稳定的排序。

当某一趟比较没有出现交换时,说明已经排好序了就可以结束本算法,由此可以提高效率。

时间复杂度:

平均时间复杂度:O(n^{2} 

最好情况(正序):

比较次数:n-1       移动次数:0

最坏情况(逆序):

比较次数:\frac{1}{2}n^{2}-n)            移动次数:\frac{3}{2}n^{2}-n)

void bubble_sort(SqList &L){
     int m,j;
     ElemType temp;
     for(m=0;m<n-1;m++){
         for(j=0;j<n-m-1;j++){
             if(L.r[j].key>L.r[j+1].key){
                 temp=L.r[j];
                 L.r[j]=L.r[j+1];
                 L.r[j+1]=temp;
             }
         }
     }
}


//改进,增加一个标记

void bubble_sort(SqList &L){
     int m,j,flag=1;
     ElemType temp;
     for(m=0;m<n-1&&flag==1;m++){
         flag=0;
         for(j=0;j<n-m-1;j++){
             if(L.r[j].key>L.r[j+1].key){
                 flag=1;
                 temp=L.r[j];
                 L.r[j]=L.r[j+1];
                 L.r[j+1]=temp;
             }
         }
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值