python笔试面试项目实战2020百练15-某一线大厂的冒泡排序面试套路

面试过程

小强今天参加某一线大厂的线上面试。上场和蔼的面试官出了如下一道题目:


小强有点不屑一顾,好歹我也是5年经验的python高级测试开发,居然考简单的冒泡排序,完全体现不出我的水平,待我3秒搞定它。

3分钟后,小强调试成功:

心里颇为得意,大材小用,搞定这个太容易了。

面试官面带笑容,问有没有可以提高效率的地方?

效率?冒泡本来效率就不高啊。

等等。1分钟后小强修改成如下:

面试官皱了一下眉头,问还有其他改进的地方么?

这些倒是把小强惊到了,挠了了头,不好意思的说:“目前只想到这些。”

面试官提示道:“有没有一些循环是没有发生元素交换的?"

小强若有所思,5分钟后修改成如下:

面试官点点头:”恭喜,本题笔试通过!”

冒泡排序简介

冒泡排序用于按升序或降序对列表中的项目进行排序。这是通过比较两个相邻的值来实现的。如果前值比后值高,则两者互换位置。

以如下列表为例:

  • 第一轮循环:
  • 第2轮
  • 第3轮
  • 第4轮

参考资料

  • 本文最新版本地址
  • 本文涉及的python测试开发库 谢谢点赞!
  • 本文相关海量书籍下载
  • 源码地址 https://github.com/china-testing/python-testing-examples interview/ bubble_sort1.py bubble_sort2.py bubble_sort3.py

优化算法

如果相邻的值都已经排序好,则没有必要继续循环。

  • 冒泡排序的优点
    • 容易理解
    • 当列表需要调整的元素不多时效果很好。
    • 不需要大量的内存。
    • 代码很容易。
    • 对空间的要求是小
  • 冒泡排序的缺点
    • 在对大列表进行排序表现并不好。需要太多时间和资源。
    • 主要用于学术
    • 对列表进行排序所需的步骤数为n的平方。
  • 冒泡排序的复杂性分析

排序复杂度用来表示对列表进行排序所需的执行时间和空间。冒泡排序对列表进行(n – 1) 次迭代排序,其中n是列表中元素的总数。

泡沫排序的时间复杂度为O(n2)

空间复杂度衡量对列表进行排序所需的额外空间量。泡沫排序只需要为用于交换值的时间变量提供一个额外空间。因此,它的空间复杂度为O (1)。

你可能感兴趣的:(python笔试面试项目实战2020百练15-某一线大厂的冒泡排序面试套路)