内重循环为什么还要减去i?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2019-07-31 18:56:11

        同学你好,1、内层循环中把数组a的长度减 i 和减 1 ,是为了减少比较次数,提高运行效率。这样每轮比较的次数就会逐渐减少。因为每次冒泡排序后,最大元素总在最下面,所以不用在比较了。

        其中减1是因为数组的下标是从0开始,而数组的长度是从1开始的!例如:

        数组 arr int[] arr = {34,53,12,32,56,17};的冒泡排序

for中的第一遍循环,是确定循环次数,有六个数组元素,循环5次

for中的第二层循环,将a[j]与a[j+1]的元素进行两两比较,

第一遍比较   34  12  32  53  17  56          //已经确定最后一个值是最大值 arr[5]

第二遍比较   12  32  34  17  53  56         //确定最后两个       arr[4] arr[5]

第三遍比较   12  32  17  34  53  56          //确定最后三个     arr[3]  arr[4]   arr[5]

第四遍比较   12  17  32  34   53   56        //确定最后四个     arr[2]  arr[3]  arr[4]   arr[5]

第五遍比较   34  12  32  53  17  56         //比较最前面的两个数据  比较arr[0] 与arr[1]

         如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 一心励志当码农 #1
    减去i的含义就是经过几遍比较就确定了几个数字,比如经过第一遍比较,就确定了一个数字,此时减i就是减1,经过第二遍比较,就确定了两个数字,此时减i就是减2,以此类推,所以要减i减1,是这个意思吗老师
    2019-07-31 19:04:11
  • 同学你好,这里同学的意思是对的,只是比如经过第一遍比较,就确定了一个数字,此时第一遍的比较时,条件减i就是减0,因为i是从0开始的,第一遍的比较需要全部数据去两两比较!以此类推,经过第二遍比较,就确定了两个数字,此时减i就是减1。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-07-31 19:23:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师