设为首页 - 加入收藏
广告 1000x90
您的当前位置:黄大仙www78345 > 交换排列 > 正文

冒泡排序在最坏的情况下的比较次数为什么是n(n-1)2?

来源:未知 编辑:admin 时间:2019-08-16

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  冒泡排序如1,2,3,4最好的情况是按完全升级排列,最坏就是数字完全按降序排列:

  交换机最后是4321;这就是最坏情况下的次数3+2+1=6=4*3/2;其实对于n个的话,升序的数字;最坏的情况就是如此:次数为:n-1+n-2.........+1=n*(n-1)/2

  比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

  针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

  冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。

  所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

  冒泡排序如1,2,3,4最好的情况是按完全升级排列,最坏就是数字完全按降序排列:

  其实对于n个的话,你要求降低排列,但是偏偏都是升序的数字;最坏的情况就是如此:次数为:n-1+n-2......+1=n*(n-1)/2。

  1、要想编出程序来,首先我们必须了解冒泡排序法的意思:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素进行同样的操作,这样,最后的元素应该会是最大的数。排除最后一个数,针对所有的元素重复以上的步骤。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

  3、有些朋友可能看不太懂,我来解释下。我们定义了i,j,a[10],进入i的循环,把值存入a[i]里。

  4、存好数据后,进入下一个循环,判断a[j-1]和a[j]的大小,因为i=0,所以这里就是从a[0]开始判断的,如果更大就交换位置。

  5、最后就是输出结果了,上一步已经排好位置了,我们只需要把排好的数打印出来就是了。

  如1,2,3,4最好的情况是按完全升级排列,最坏就是数字完全按降序排列:

  排列,但是偏偏都是升序的数字;最坏的情况就是如此:次数为:n-1+n-2

本文链接:http://apkhealth.com/jiaohuanpailie/556.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top