qq_37130151
qq_37130151
2017-01-05 02:28
采纳率: 87.1%
浏览 1.1k
已采纳

c语言问题关于冒泡法排序的

不明白后边的冒泡法排序是j<n-k求解释图片图片

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Tiger_Zhao
    Tiger_Zhao 2017-01-05 03:00
    已采纳

    这个函数写得不够直观。
    j循环的效果就是把a[0]..a[n-k]最重(大)的一个成员“沉”到a[n-k]处。
    大概叫“沉没法”比较恰当。
    其实把两个循环写成下面的方式会更好理解

    for(k=n-1;k>=1;k--)
        for(j=0;j<k;j++)
    
    点赞 评论
  • welan123123
    奔跑的小鱼儿 2017-01-05 02:44

    冒泡排序的核心是每次找出剩余对象中最大或最小值,j<n-k 中k就代表已经找出来的最大或最小值的数量,接下来只需要在剩余对象中循环比较找出最大或最小值

    点赞 评论
  • qq_29594393
    当作看不见 2017-01-05 03:00
    点赞 评论
  • cmqwan
    金刀李 2017-01-05 03:19

    冒泡排序就是:每一轮都找到最大的一个数,然后放到最后。
    第一个for循环表示的就是一共要循环几轮,对应k。
    第二个for循环是在每一轮里面对每个数进行循环,对应j。
    总个数是n。
    你可以按照程序的思维走一遍:
    第一轮,每个都会走一遍,找到最大的放在最后。k=1,j=5。
    第二轮,按理说每个都会走一遍,但是第一轮已经把最大的放到最后,所以最后一个肯定比前面的都大,就没必要在比较一次了,所以少比一次。k=2,j=4。
    第三轮,同理,最后2个肯定比前面的大,就少比2次。k=3,j=3。
    。。。
    然后找下规律,k,j,n是一个等式,就可以得出结论的呢

    点赞 评论
  • xuan521521
    JulyAnRef 2017-01-05 03:22

    治好了老子多年的颈椎病

    点赞 评论

相关推荐