校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 冒泡排序
题目

线性表的长度为10,在最坏情况下,冒泡排序需要比较次数为()。

A.40

B.42

C.44

D.45

解答

正确答案是 D

冒泡的算法就是
for(int i=0; i<n; ++i)
{
    for(int j=1; j<n-i; ++j)
    {
        if(a[j-1]>a[j])
        {交换。。。}
    }
}

当i=0时,进行比较n-1次;
当i=1时,进行比较n-2次;
。。。
当i=n-1时,进行比较0次;
所以总的比较次数就是(n-1) + (n-2) + ... + 1 + 0 = n*(n-1)/2
C 8条回复 评论
碧海问舟

最晚的情况是序列是逆序的,需比较(n-1)+(n-2)+......+1=n*(n+1)/2

发表于 2018-10-13 13:47:53
0 0
大葫芦

冒泡排序在最坏的情况下,需要进行n/2遍的从前往后扫描和n/2遍的从后往前扫描,因此需要进行n(n-1)/2次比较.10(10-1)/2=45.

发表于 2018-10-13 13:47:41
0 0
人间喜剧

数据结构与算法分析机械工业专门讲了一般算法的下界上限

发表于 2018-10-13 13:47:31
0 0
小洁癖

想多了,然后多减了一个1。。。是从9到0一共10次,而不是9到2。。

发表于 2018-10-13 13:47:21
0 0
小小精灵

我们一般说的n2,其实就是 n*(n-1)/2  
所以这道题就是10*9/2 = 45

发表于 2018-10-13 13:47:10
0 0
资深90后

冒泡最好的情况,比较次数是 n-1
最坏情况下,比较次数是n*(n-1)/2

发表于 2018-10-13 13:46:55
0 0
站桩灵

n(n+1)/2=10*9/2=45

发表于 2018-10-13 13:46:47
0 0
改造家

最坏的情况即是每个元素两两都要相比较。故用排列组合的思想即为C(10,9)=45

发表于 2018-10-13 13:46:39
0 0