算法之冒泡排序

先易后难,层层递进的思想

定义——
冒泡排序是一种最简单的交换排序方法,通过两两比较相邻记录的关键字,如果为逆序,则进行交换,从而使关键字小的记录如起泡一般逐渐往上“漂浮”,或者使关键字大的记录如石块一样逐渐向下“坠落”。
P:一眼标准的定义,一脑标准的懵逼,用自己的话说就是几句,两两作一组比较为判定,直到排序完,可升序也可降序。
拿升序举例

——首先要知道,排序肯定不止一趟——

第一趟形象地表达如下图
不知道哪个MAX,所以暂定首个元素是MAX(这句话很关键,是理解第二趟排序的前提)
在这里插入图片描述
10个数要比较10-1次J个数要比较J-1次
每一次就用 if(a[ j ]>a[ j+1 ])进行交换(基础,最经常用的数值交换方式,升序降序就把形式换一下。)。
所以一趟共进行9次循环(次数是动态变化中),这样一来,MAX就放到最后 了(唯一能确定)。

这样,第一趟排序就完成了
————————————分界线————————————————
第二趟形象地表达如下图
因为我们把首元素看成MAX(不论首元素是否为MAX,这样推断方便计算。)
在这里插入图片描述
正确推断如下
这个假设前提很重要,是贯穿整个冒泡逻辑思想的“一线牵”,可自行推断的嘛。

9个数要比较9-1次,每一次就用 if(a[ j ]>a[ j+1 ])进行交换(基础),所以一趟共进行8次循环(次数是动态变化中),这样一来,MAX就放到最后了(唯一能确定)。

综上所述,规律很明显

第一趟——比较9次

  1. a[ 1 ] > a[ 2 ]
  2. a[ 2 ] > a[ 3 ]
  3. a[ 4 ] > a[ 5 ]
  4. a[ 6 ] > a[ 7 ]

    9. a[ 9 ] > a[ 10 ](“最大与最大”相比较)

第二趟——比较8次

  1. a[ 1 ] > a[ 2 ]
  2. a[ 2 ] > a[ 3 ]
  3. a[ 4 ] > a[ 5 ]

    8. a[ 8] > a[ 9 ] (“最大与最大”相比较)

第三趟——比较7次

  1. a[ 1 ] > a[ 2 ]
  2. a[ 2 ] > a[ 3 ]
  3. a[ 4 ] > a[ 5 ]

    7. a[ 7] > a[ 8 ] (“最大与最大”相比较)
    最后一趟(第九趟)——比较1次
    1. a[ 1 ] > a[ 2 ](相比较出最小)

算法思想
两两比较,大在前/小在后,逐次递减比较数

 for(i=1;i<10;i++)  
    
        for(j=1;j<11-i;j++)   
        
            if(a[j]>a[j+1])
   
第一行代码作用:总共要进行几次排序的次数(要理解,是由排序的数字个数产生)
	正确理解第二行代码,作用:限定“俩俩为一组”比较的次数(每一趟排序,每两个数字要比较的次数)
		第三行代码:交换数值(不是核心,是常用基础)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值