排序是每个 IT 工程师和开发人员必备的知识技能。不仅要通过编程面试,而且要了解算法本身。不同的排序算法完美地展示了算法设计如何对程序的复杂性、速度和效率产生如此大的影响。

让我们来看看排名前5,也是最常见,面试中经常被问到的排序算法,看看如何用Python实现它们!

1.冒泡排序

冒泡排序是 CS 入门课程中最常讲授的一种,因为它清楚地说明了排序的工作原理,同时又简单又易于理解。 冒泡排序将逐步遍历列表并比较相邻的元素对。如果元素的顺序错误,则会交换这些元素。重复对列表中未排序部分的遍历,直到对列表进行排序。 因为冒泡排序重复地通过列表中未排序的部分,所以它的最坏情况复杂性为O(n²)。

2.选择排序

选择排序也相当简单,优于冒泡排序。如果你要在这两者之间进行选择,那么最好使用默认的“右选择排序”。使用选择排序,我们将输入列表/数组分为两部分: 已排序项的子列表和构成列表其余部分的剩余项的子列表。

我们 首先在未排序的子列表中找到最小的元素,并将其放在已排序子列表的末尾。 因此,我们不断地获取最小的未排序元素,并将其按排序顺序放入已排序的子列表中。此过程将重复进行,直到列表完全排序。

3.插入排序

插入排序比冒泡排序和选择排序都要快,而且可以说更加简单。就像在玩纸牌游戏时,洗牌的过程就是反复进行插入排序! 在每次循环迭代中,插入排序从数组中删除一个元素。然后在另一个排序数组中查找该元素所属的位置,并将其插入其中。 它重复这个过程,直到没有输入元素保留。

4.合并排序

合并排序是一个完美的分而治之的算法例子。使用这种算法只需要通过以下两个主要步骤:

  • (1) 连续分割未排序的列表,直到有N个子列表,其中每个子列表都有1个“未排序”的元素,N是原始数组中的元素数。
  • (2) 反复合并,即一次将两个子列表合并在一起,生成新的已排序子列表,直到所有元素都完全合并到一个已排序的数组中。

5.快速排序

快速排序也是一种分而治之的算法,与合并排序一样。尽管它有点复杂,但在大多数标准实现中,它的执行速度比合并排序快得多,而且很少达到O(n²)的最坏情况复杂度。它有三个主要步骤:

  • (1) 我们首先从数组中选择一个元素,称之为pivot。
  • (2) 将小于轴的所有元素移到轴的左侧;将大于轴的所有元素移到轴的右侧。这称为分区操作。
  • (3) 递归地将上述2个步骤分别应用于元素的每个子数组,这些元素的值比上一个轴的值小或大。如果大家对Python感兴趣的话,可以加一下我的微信哦:abb436574,免费领取一套学习资料和视频课程哟~

面试刷题必看!Python中的5大排序算法及其实现代码相关推荐

  1. 面试中的 10 大排序算法总结

    前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事. ...

  2. 十大排序算法思想和代码总结(Python版)

    Table of Contents 一.概述 二.算法简介及代码展示 1.冒泡排序($O(n^2)$) 2.简单选择排序($O(n^2)$) 3.简单插入排序($O(n^2)$) 4.堆排序($O(n ...

  3. 无序数组求第k大的数 python_【python刷题】寻找数组中第K大/小的数

    使用堆 import heapq def findKthLargest(nums, k): stack = [] for num in nums: heapq.heappush(stack, num) ...

  4. 【面试刷题复习】更新中 2021.8.30

    1 数组 015 三数之和 2 回溯 046 全排列 3 动态规划 剑指42 连续子数组的最大和 416 分割等和子集 494 目标和 139 单词拆分 279 完全平方数 322 零钱兑换 377 ...

  5. 【Python刷题篇】Python从0到入门3|循环、条件复习、元组入门、字典入门

    Python从0到入门3目录 前言 Q1:团队分组 Q2:禁止重复注册 Q3:元组-牛客运动会 Q4:字典-遍历字典 Q5:字典-毕业生就业调查 Q6:姓名与学号 总结 前言 - 本期是Python从 ...

  6. 【Python刷题篇】Python从0到入门4|字典复习、函数入门、综合实践

    Python从0到入门3目录 前言 Q1:字典复习-首都 Q2:函数入门-求差 Q3:函数入门-牛牛的朋友 Q4:综合案例:自动售卖饮料机 Q5:综合案例-被8整除的数字 Q6:综合案例-披萨店的订单 ...

  7. 1000 面试题,BAT 机器学习面试刷题宝典!

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要好多分钟 跟随小博主,每天进步一丢丢 ID:Dr.Wu 公众号:大鱼AI 来源:CSDN 编辑:三石 刷题,是面试前的必备环节.本文作者便总结了 ...

  8. leetcode c程序总提示主函数_帅气中国小哥出“大招”,程序员跳槽面试刷题必备...

    整理 | 一一 出品 | AI科技大本营 春节刚过,年终奖收入囊中,属于工程师们一年一度的跳槽季也来了. 跳槽后薪水翻倍自然爽歪歪,但最怕的是面试翻车,那就悲剧了.可想而知,想要跳槽或者为春招准备的毕 ...

  9. 肝了一个月,我做了个免费的面试刷题网

    大家好,我是鱼皮. 如今找工作.面试实在是太卷了,每轮面试都 必考 八股文,不背不行.网上虽然有很多面试题,但过于分散,就导致很多朋友又不知道到哪去找题.该背哪些题了. 所以我决定做一个完全免费.干净 ...

最新文章

  1. 如何安装或卸载 Internet Explorer 9?
  2. 为什么数据挖掘很难成功?
  3. 最火的前端开发框架Bootstrap使用教程学习!
  4. 别吵吵,分布式锁也是锁
  5. helloword,认真就输了
  6. openwrt lamp
  7. java 传送解析8583报文_java发送ISO8583报文接口案例
  8. html 并集选择器,CSS并集选择器
  9. Qt文档阅读笔记-共享库的创建与调用
  10. 从源码分析RocketMQ系列-Producer的invokeSync()方法
  11. 接口测试和性能测试的区别
  12. CentOS 利用Yum安装mysql后无法启动(MySQL Daemon failed to start.)
  13. 站点页面Service Unavailable 503的一种解决方法
  14. Asp.net WebForm使用codeFirst建立和修改数据库小结
  15. hbase的学习逻辑_HBase-1.0.1学习笔记(二)HBase数据模型
  16. 汇编语言 王爽 第四版 第一章 检测点1.1
  17. Java经典编程习题100例,供初学者学习
  18. 定义Student类,该类中有Sting name和int age两个属性,该类实现Comparable接口,实现根据学生姓名和年龄排序,该类重写toString()输出学生的姓名和年龄。
  19. Vue中的filter过滤器是使用方法
  20. excel 文件加密

热门文章

  1. 2021年360奢侈品用户观察报告
  2. 2021年Q3小红书美妆行业营销报告
  3. 微信生态下的营销洞察
  4. 虚拟专题:知识图谱 | 医学知识图谱构建关键技术及研究进展
  5. 作者:​覃海焕(1978-),女,博士,上海电机学院讲师。
  6. 一本可能引发社会调查行业革命的书
  7. 第三届(2016)科学数据大会——科学数据与创新发展征文通知
  8. 【项目管理】外包和采购
  9. 【Python】利用pip下载Django超时失败的解决方法
  10. 【Windows】Windows10-Telnet的使用