范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

面试必会八大排序算法(Python)

  作者:ls秦
  原文:https://blog.csdn.net/qq_38328378/article/details/85037315
  一、插入排序
  介绍
  插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。
  算法适用于少量数据的排序,时间复杂度为O(n^2)。
  插入排算法是稳定的排序方法。
  步骤
  ①从第一个元素开始,该元素可以认为已经被排序
  ②取出下一个元素,在已经排序的元素序列中从后向前扫描
  ③如果该元素(已排序)大于新元素,将该元素移到下一位置
  ④重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  ⑤将新元素插入到该位置中
  ⑥重复步骤2
  排序演示
  算法实现
  二、冒泡排序
  介绍
  冒泡排序(Bubble Sort)是一种简单的排序算法,时间复杂度为O(n^2)。
  它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
  这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
  原理
  循环遍历列表,每次循环找出循环最大的元素排在后面;
  需要使用嵌套循环实现:外层循环控制总循环次数,内层循环负责每轮的循环比较。
  步骤
  ①比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  ②对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  ③针对所有的元素重复以上的步骤,除了最后一个。
  ④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
  算法实现:
  三、快速排序
  介绍
  快速排序(Quicksort)是对冒泡排序的一种改进,借用了分治的思想,由C. A. R. Hoare在1962年提出。
  基本思想
  快速排序的基本思想是:挖坑填数 + 分治法。
  首先选出一个轴值(pivot,也有叫基准的),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
  实现步骤
  ①从数列中挑出一个元素,称为 "基准"(pivot);
  ②重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边);
  ③对所有两个小数列重复第二步,直至各区间只有一个数。
  排序演示
  算法实现
  四、希尔排序
  介绍
  希尔排序(Shell Sort)是插入排序的一种,也是缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,时间复杂度为:O(1.3n)。
  希尔排序是基于插入排序的以下两点性质而提出改进方法的:
  ·插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率;
  ·但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位。
  基本思想
  ①希尔排序是把记录按下标的一定量分组,对每组使用直接插入算法排序;
  ②随着增量逐渐减少,每组包1含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法被终止。
  排序演示
  算法实现
  五、选择排序
  介绍
  选择排序(Selection sort)是一种简单直观的排序算法,时间复杂度为Ο(n2)。
  基本思想
  选择排序的基本思想:比较 + 交换。
  第一趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;
  第二趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;
  以此类推,第 i 趟,在待排序记录ri ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
  排序演示
  选择排序的示例动画。红色表示当前最小值,黄色表示已排序序列,蓝色表示当前位置。
  算法实现
  六、堆排序
  介绍
  堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。
  利用数组的特点快速指定索引的元素。
  基本思想
  堆分为大根堆和小根堆,是完全二叉树。
  大根堆的要求是每个节点的值不大于其父节点的值,即A[PARENT[i]] >=A[i]。
  在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。
  排序演示
  算法实现
  七、归并排序
  介绍
  归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
  基本思想
  归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
  算法思想
  自上而下递归法(假如序列共有n个元素)
  ① 将序列每相邻两个数字进行归并操作,形成 floor(n/2)个序列,排序后每个序列包含两个元素;
  ② 将上述序列再次归并,形成 floor(n/4)个序列,每个序列包含四个元素;
  ③ 重复步骤②,直到所有元素排序完毕。
  自下而上迭代法
  ① 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;
  ② 设定两个指针,最初位置分别为两个已经排序序列的起始位置;
  ③ 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;
  ④ 重复步骤③直到某一指针达到序列尾;
  ⑤ 将另一序列剩下的所有元素直接复制到合并序列尾。
  排序演示
  算法实现
  八、基数排序
  介绍
  基数排序(Radix Sort)属于"分配式排序",又称为"桶子法"。
  基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m) ,其中 r 为采取的基数,而m为堆数。
  在某些时候,基数排序法的效率高于其他的稳定性排序法。
  基本思想
  将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
  基数排序按照优先从高位或低位来排序有两种实现方案:
  MSD(Most significant digital) 从最左侧高位开始进行排序。先按k1排序分组, 同一组中记录, 关键码k1相等,再对各组按k2排序分成子组, 之后, 对后面的关键码继续这样的排序分组, 直到按最次位关键码kd对各子组排序后. 再将各组连接起来,便得到一个有序序列。MSD方式适用于位数多的序列。
  LSD (Least significant digital)从最右侧低位开始进行排序。先从kd开始排序,再对kd-1进行排序,依次重复,直到对k1排序后便得到一个有序序列。LSD方式适用于位数少的序列。
  排序效果
  算法实现
  九、总结
  各种排序的稳定性、时间复杂度、空间复杂度的总结:
  平方阶O(n²)排序:各类简单排序:直接插入、直接选择和冒泡排序;
  从时间复杂度来说:
  线性对数阶O(nlog₂n)排序:快速排序、堆排序和归并排序;
  O(n1+§))排序,§是介于0和1之间的常数:希尔排序 ;
  线性阶O(n)排序:基数排序,此外还有桶、箱排序。

骁龙888Plus5000mAh电池1亿主摄,仅1599起,还买啥红米竞争越是激烈的手机市场发展速度往往也会越快,像一些新产品更是能够称为手机行业里的标杆。不过竞争比较激烈的市场也有不好的方面,那就是发布新机的速度太快,刚买不久的新机随着越来越多的新FindX5Pro天玑版开箱换了一颗芯,这些体验全方位超纲?随着芯片技术的不断创新与突破,高通和联发科纷纷带来了旗下最顶级的处理器,让旗舰手机市场逐渐呈现出百家争鸣的局势。而年前,联发科新一代旗舰处理器天玑9000的出现,凭借全新的架构和破vivoX80Pro和苹果13相比较,该如何选?目前两个手机的价格是差距不大,也各有特点,iPhone13在参数配置上肯定是不如vivoX80Pro的,但苹果自带的独特优势是安卓很难抗衡的一是自研芯片IOS系统护城河。是苹果目前屏下旗舰当真不贵了,20256G降至2598,中兴最后的清仓一转眼,就到大家期待已久的五一小长假,而智能手机市场也该消停一段时间了。进入五月份后高端新机将不会在像前几个月一样扎堆出现了,备受消费者瞩目的机型也仅剩华为Mate50系列和小米1三星发布新的手机相机传感器依旧一亿像素,但是底却越来越小了自从小米发布了三星的一亿像素传感器之后,三星似乎就在高像素的路上一去不回头,连续几年都推出了一亿像素的迭代传感器。而近期三星官网也是公布了新的手机相机传感器ISOCELLHM6,这iPhone14Max,苹果最有潜力重现辉煌的机型今年的iPhone14系列基本已经确定,将会砍掉mini系列,新增iPhone14Max,也就是说iPhone14将由4款机型组成,分别为iPhone14,iPhone14Max,Science水凝胶人类的触觉感知依赖于软皮肤机械感受器,这种感受器与更软的神经组织进行复杂的接口。在先进的假肢机器人和可穿戴设备中,模拟人类皮肤的传感器阵列的出现导致了基于弹性体的压阻式电容式和驻极SpringBootVueWebsocket实现服务器端向客户端主动发送消息概述本文通过一个实际的场景来介绍在前后端分离的项目中通过WebSocket来实现服务器端主动向客户端发送消息的应用。主要内容如下WebSocket是什么服务器端向客户端主动发送消息夜晚重启特斯拉,突传凄凉女声?维护声誉的最好办法应是正面回应青锋因为被指没有给安阳女车主提供完全行车数据,导致女车主在上海车展时站到车顶高喊特斯拉刹车失灵,引发国人给予高度关注的特斯拉,再度曝出行车途中,女司机发现黑色中控屏的屏幕上显示出一12GB256GB5500mAh,现已跌至2749元,2K屏旗舰售价更亲民了屏幕稍微大一点的设备,主打卖点都绕不开屏幕分辨率,因为屏幕分辨率真的非常重要,甚至比如今多家手机厂商们炒作起来的刷新率还重要,因为刷新率只有在屏幕滑动的时候才有效果,而分辨率时时刻被冷落的优质小钢炮,A14芯片128GB5G,从5999跌至3839元任何一个行业,只要有竞争,都会导致产品出现两极分化的局面。具体来说,某些产品的热度会非常高,上市之后,可能经常出现一机难求的情况,成为全球热销的爆款机型。而某些产品很有可能被市场冷
特益膳系列产品运营公司益康元因多项违规被罚没1452。57万元近日,国家市场监督管理总局公布2021年民生领域案件查办第五批铁拳行动典型案例。其中,益康元(深圳)健康科技有限公司因经营标签不符合规定的食品(固体饮料)未建立食品销售记录制度未保现在高端机,在消费者的心中,有着什么样的地位现在不管做什么买卖,我们最看重的就是利益,如果一个厂商能够赚到整个行业70的利润,那么他在这个行业里面是没有对手的,现在的消费者,更希望手机厂商,可以增加技术研发费用和投入,自己研IT人才招聘市场新变化世界经济论坛最近发布的一份就业报告,描述了过去一年全球人才市场遭受的双重冲击疫情引发的社交隔离与经济萎缩,伴随着技术加速推进带来的办公场所转换,共同带来令人始料未及的复合影响。IT乐视又开始重启手机市场,乐视S1你期待吗?手机是现代生活中最不可或缺的产品,无论是用于通讯娱乐还是工作,每个人都离不开手机,可以说,手机已经成为人类的灵魂伴侣。因为手机功能强大,没有手机什么都做不了,很多企业看到了手机的重即是支架又是充电宝南卡pow2开箱体验平常用手拿着手机看视频时间久了手真的很累,家里有一个手机支架但不能放数据线。本来想找一个能放数据的支架,转念一想直接买个充电宝支架不就好了吗,最好还是带无线充电功能的。于是,我看上BAT圈地战争简史巨头如何改变互联网?17世纪末,英国圈地运动走向高潮,影响英国此后数百年国运。圈地运动加速英国工业化进程,推动英国称霸全球,也让英国农民付出了血泪代价。互联网上,同样有一场长达10余年的圈地运动。以B重塑IT的五大理念无论面临什么样的挑战,创新都需要大思维。在满足快速发展的业务需求的驱动下,首席信息官们发现自己正在编写一本新的剧本,其中重点关注敏捷性克服旧习惯和技术债务重新培训员工,甚至重塑IT数字心态成为数字企业而不是行数字之事Bethechangeyouwanttosee想改变世界的话就从自己做起吧这句话常常被误传为出自圣雄甘地,但实际上是ArleenLorrance的书爱的工程里的一句话,这句话很好地数字化转型信息化规划路径本文以能源行业为例,探讨数字化转型信息化规划路径。智能网络的发展将依赖于通信与信息技术的发展与利用,并与企业自动化技术融合实现信息化的价值,信息化为智能网络的发展提供了基础和技术平仅仅是空谈与口号吗?浅析多云管理如何加速企业数字化进程目前,由于云计算行业及互联网应用的空前发展,越来越多的企业开始采用多云IT架构,这不仅使企业IT系统复杂度日益提升,也给企业IT运维能力提出了更高要求。我们看到,在各行业中的云用户2020年度电影榜单,这一年的好电影全在这里了豆瓣2020年度电影榜单重磅揭晓!汇聚全年好电影,这些高分佳作,怎能错过?一起来看看吧!基于2020年你和万千豆瓣用户的电影标记数据排名依据评分人数和时间综合考虑点击蓝字片名,可以