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

2024-11-30 13:46:33
推荐回答(3个)
回答1:

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

第一次是1:然后1和2,3,4。

第2次:2:比较谁比它小交换,于是2和34交换,答案是3421。

第3次为3:3和4。

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

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

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

扩展资料:

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

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

参考资料来源:百度百科--冒泡排序

回答2:

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

第一次是1:然后1和2,3,4;

第2次是2:比较谁比它小交换,于是2和34交换,答案是3421;

第3次为3:3和4;

最后是4321;这就是最坏情况下的次数3+2+1=6=4*3/2;

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

C语言冒泡排序法详解

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

2、了解之后就是代码了。

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


                                   

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


                                   

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

      

回答3:

冒泡排序
如1,2,3,4最好的情况是按完全升级排列,最坏就是数字完全按降序排列:
第1次是1:然后1和2,3,4
第2次:2:比较谁比它小交换,于是2.和34交换,答案是3421
第3次为3:3和4
交换机最后是4321;这就是最坏情况下的次数3+2+1=6=4*3/2;
其实对于n个的话,你要求降低
排列,但是偏偏都是升序的数字;最坏的情况就是如此:次数为:n-1+n-2
.........+1=n*(n-1)/2