冒泡排序的效率

1,116 阅读2分钟

冒泡排序的效率

这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战 冒泡排序的执行步骤可分为两种。

  • 比较:比较两个数看哪个更大。
  • 交换:交换两个数的位置以使它们按顺序排列。

先看看冒泡排序要进行多少次比较

回顾之前那个5个元素的数组,你会发现在第1次轮回我们为4对元素进行了4次比较。

到了第2次轮回,则只做了3次比较。这是因为第1次轮回已经确定了最后一个格子的元素,所以不用再比较最后两个元素了。

第3次轮回,只比较2次;第4次,只比较1次。

算起来就是:

4+3+2+1=10次比较。

推广到个元素,需要

次比较。

分析过比较之后,再来看看交换

如果数组不只是随机打乱,而是完全反序,在这种最坏的情况下,每次比较过后都得进行一次交换。因此10次比较加10次交换,总共20步。

现在把两种步骤放在一起来看。一个含有10个元素的数组,需要:

9+8+7+6+5+4+3+2+1=45次比较,以及45次交换,共90步。

20个元素的话,就是:

19+18+17+16+15+14+13+12+11+10+9+8+7+6+5+4+3+2+1=190次比较,以及190次交换,共380步。

效率太低了。元素量呈倍数增长,步数却呈指数增长,如下表所示。

再看仔细一点,你会发现随着的增长,步数大约增长为2。

因此描述冒泡排序效率的大记法,是

规范一些来说:用算法处理个元素,大约需要步。

算法是比较低效的,随着数据量变多,其步数也剧增,如下图所示。

注意代表步数的曲线非常陡峭,的则只呈对角线状。

最后一点:也被叫作二次时间