当前位置: 首页 > 科技观察

Python太难?原来这一点我没看懂

时间:2023-03-11 21:04:33 科技观察

接下来,一起来学习吧!1.冒泡排序冒泡排序之所以被称为冒泡排序,正是因为这种排序算法的每一个元素都可以像一个小泡泡一样,根据自身的大小一点一点地移动到数组的一侧。反复访问待排序数组,一次比较两个元素,顺序不对就交换。重复访问序列的工作,直到不需要交换,即序列已经排序。这个算法的名字来源于这样一个事实,即较小的元素会通过交换慢慢“浮”到序列的顶部。2.快速排序快速排序是对冒泡排序算法的改进。和冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序每一轮只将一个元素冒泡到数组的一端,而快速排序每一轮选取一个参考元素,将其他比它大的元素移到数组的一侧,比它小的元素序列被移动到序列的另一边,从而将序列分成两部分。3、插入排序虽然插入排序的代码实现不像冒泡排序和选择排序那么简单粗暴,但是原理是最容易理解的。插入排序是最简单、最直观的排序算法。它的工作原理是构造一个有序序列,对于未排序的数据,在已排序序列中从后往前扫描,找到对应的位置插入。插入排序和冒泡排序一样,也有一种优化算法,叫做分半插入。4.希尔排序希尔排序是插入排序的一种更高效的改进版本。目的是为了提高插入排序的速度,交换不相邻的元素对数组的各个部分进行排序,最后使用插入排序对数组的各个部分进行排序。有序数组排序。希尔排序是将记录按照一定的下标增量进行分组,使用直接插入排序算法对每一组进行排序;随着增量逐渐减小,每组包含的关键词越来越多。当增量减为1时,整个文件刚刚分组完毕,算法结束。5.归并排序归并排序是一种基于归并操作的有效排序算法。该算法是分治法的一个非常典型的应用。作为分治思想的典型算法应用,归并排序有两种实现方式:自顶向下递归;自底向上迭代;6.堆排序。的排序算法。堆叠是一种近似完全二叉树的结构,同时满足堆叠的性质:即子节点的键值或索引总是小于(或大于)其父节点。堆排序可以说是利用堆的概念进行排序的一种选择排序。分为两种方法:bigtopheap:每个节点的值都大于或等于其子节点的值,在堆排序算法中按升序使用;小顶堆:每个节点的值小于或等于其子节点的值在堆排序算法中按降序排列;7.计数排序计数排序的核心是将输入的数据值转换成key,存放到额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入数据必须是一定范围内的整数。8.桶排序桶排序是计数排序的升级版。它利用了函数的映射关系,而高效的关键就在于这个映射函数的确定。为了让桶排序更高效,我们需要做两件事:在额外空间充足的情况下,尽可能增加桶的数量,并使用一个映射函数,可以将输入的N个数据均匀分布到K个桶中,同时,对于桶中元素的排序,比较排序算法的选择对性能至关重要。9.基数排序基数排序是一种非比较整数排序算法。它的原理是把整数按照位数分割成不同的数,然后分别比较每一位。由于整数也可以用特定的格式表示字符串和浮点数,因此基数排序并不局限于整数。