排序算法(一):冒泡排序

排序思路:
样例:{22,35,16,9,5,20}
1. 从首位元素开始,前后元素相比较,保证“小在前、大在后”。逐个元素向后递推。一遍结束后,最大元素将位于排序末位。

{22,35,16,9,5,20}
{22,16,35,9,5,20}(16<->35)
{22,16,9,35,5,20}(9<->35)
{22,16,9,5,35,20}(5<->35)
{22,16,9,5,20,35}(20<->35)

结果:{22,16,9,5,20,35}
2. 因为最大元素已经排位完毕,所以不考虑末位最大元素,从头开始,再做一轮排序。

排序范围:{22,16,9,5,20}

结果: {16,9,5,20,22,35}
可以看出,第二大元素已经排至倒数第二位
3.以此类推,继续排序

 {16,9,5,20,22,35}
 {9,6,16,20,22,35}
 {6,9,16,20,22,35}

结果:{6,9,16,20,22,35}

c实现

void int bubbleSort(int array[], int length){
    int i,j,tmp;
    for(i=0;i<length-1;i++){
        for(j=0;j<length-1-i;j++){
            if(array[j]>array[j+1]){
                tmp=array[j];
                array[j]=array[j+1];
                array[j+1]=tmp;
            }
        }//end-of-for(j)
    }//end-of-for(i)
}

该算法时间复杂度为O(n2)
对于已排序数组,时间复杂度最好为O(n),具体优化不再详述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值