![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 66
主要介绍十大排序算法,并用python语言描述
王乐予
这个作者很懒,什么都没留下…
展开
-
【千锤百炼Python—1】:十大排序算法之冒泡排序
冒泡排序是排序算法系列的第一个要介绍的算法! 冒泡排序既属于比较类排序也属于内部排序。 一、算法原理 1. 算法原理 冒泡排序(Bubble Sort)是一种简单直观的排序算法,属于交换排序的一种。 冒泡排序遍历一个序列会对相邻的两个元素进行比较,如果后面的元素小于前面的元素就交换之,反之不进行任何操作,继续遍历,每一轮都会找到一个最大的元素。 2. 算法步骤 步骤一:比较相邻的元素,若前一个元素>后一个元素,则交换之; 步骤二:对每一对相邻元素重复步骤一的操作,该步骤的最终结果是序列的最后一位是整个序列原创 2021-12-08 19:57:58 · 1822 阅读 · 0 评论 -
【千锤百炼Python—11】:十大排序算法总结(动画+代码)
不管学习哪种语言。十大经典的排序算法都是要掌握的! 一、算法分类 十大排序算法有两种分类方式,一种是按照是否进行元素比较分类,另一种是按照是否使用外存进行分类!接下来,我会一一介绍这两种分类方式。 1. 按照是否进行元素比较分类 比较类排序:通过比较元素间的大小进行排序的一种方式。 非比较排序:不通过比较元素间的大小进行排序的一种方式。 思维导图如下: 2. 按照是否使用外存分类 内部排序:数据记录在内存中进行排序的一种方式。 外部排序:需要排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需原创 2021-12-09 07:21:05 · 1941 阅读 · 0 评论 -
【千锤百炼Python—2】:十大排序算法之快速排序
快速排序是排序算法系列的第二个要介绍的算法! 快速排序既属于比较类排序也属于内部排序。 一、算法原理 1. 算法原理 快速排序(Quick Sort)是对冒泡排序的一种提升,也属于交换排序的一种。 快速排序会对序列中的元素任选其一作为基准,以此基准,将小于基准值的元素放在基准值左边,大于基准值的元素放在基准值右边,两部分重复以此方法排序,最后整个序列完成排序。 2. 算法步骤 步骤一:从数列中挑出一个元素,称为 “基准”(pivot); 步骤二:重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比原创 2021-12-09 08:56:25 · 2119 阅读 · 0 评论 -
【千锤百炼Python—3】:十大排序算法之简单选择排序
选择排序是排序算法系列的第三个要介绍的算法! 冒泡排序既属于比较类排序也属于内部排序。 一、算法原理 1. 算法原理 选择排序(Select Sort)是一种简单直观的排序算法,属于选择排序的一种。 选择排序首先再原始序列中找到最小元素,将其存放至排序序列的起始位置,然后从剩余序列中继续寻找最小的元素,将其放置已经排序序列的末尾,重复上述操作,直至所有元素排序完毕。 2. 算法步骤 步骤一:从原始序列中找到最小的元素,将其和第一个位置的元素做交换; 步骤二:从剩下的序列数据中选择最小的元素,将其和第二个位原创 2021-12-10 16:16:26 · 2264 阅读 · 0 评论 -
【千锤百炼Python—4】:十大排序算法之堆排序
堆排序是排序算法系列的第四个要介绍的算法! 堆排序既属于比较类排序也属于内部排序。 一、算法原理 1. 算法原理 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法,属于选择排序的一种。 堆排序是一种利用堆的概念来排序的选择排序,堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序有两种类型: 大顶堆:每个结点的值都>=子节点的值; 小顶堆:每个节点的值都<=子节点的值。 2. 算法步骤 步骤一:将初始待排序原创 2021-12-11 08:54:03 · 1896 阅读 · 0 评论 -
【千锤百炼Python—5】:十大排序算法之简单插入排序
简单插入排序是排序算法系列的第五个要介绍的算法!简单插入排序既属于比较类排序也属于内部排序。一、算法原理1. 算法原理插入排序(Insertion Sort)是一种简单直观的排序算法,属于插入排序的一种。插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。2. 算法步骤步骤一:从序列的第一个元素开始,将该元素视为已被排序的序列(目前该序列中仅包含一个元素); - 步骤二:从未排序序列中取出下一个元素,原创 2021-12-11 09:29:20 · 1969 阅读 · 0 评论 -
【千锤百炼Python—6】:十大排序算法之希尔排序
希尔排序是排序算法系列的第六个要介绍的算法! 希尔排序既属于**比较类排序**也属于**内部排序**。一、算法原理 1. 算法原理 希尔排序(Shell Sort)是对简单插入排序的一种改进,属于插入排序的一种。 简单插入排序有个很大的问题:效率低,因为简单插入排序以此只能操作一个元素,整体遍历次数很多。 希尔排序的工作原理是先对待排序列分组,每个组进行简单插入排序,待每个组中的序列都有序时,再对整体进行简单插入排序。原创 2021-12-12 08:18:00 · 1996 阅读 · 1 评论 -
【千锤百炼Python—9】:十大排序算法之归并排序
归并排序是排序算法系列的第七个要介绍的算法! 归并排序既属于**比较类排一、算法原理 1. 算法原理 归并排序(Merge Sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并排序的二路归并排序方式: 二路归并:将待排序列分成两个长度相等的子序列,然后对每个子序列进行排序,然后将排序好的子序列合并成一个完整序列。 归并排序是排序算法系列的第七个要介绍的算法! 归并排序既属于**比较类排序**也属于**内部排序**。原创 2021-12-12 09:18:19 · 2222 阅读 · 0 评论 -
【千锤百炼Python—8】:十大排序算法之基数排序
基数排序是排序算法系列的第八个要介绍的算法! 基数排序既属于非比较类排序也属于内部排序。 一、算法原理 1. 算法原理 基数排序(Radix Sort)是把待排序中的元素按照低位先排序,然后收集,再按照高位排序,再收集,直至最高位。 2. 算法步骤 步骤一:取得待排序序列中的最大值,并取得位数; 步骤二:arr为原始数组,从最低位开始取每个位组成radix数组; 步骤三:对radix进行计数排序。 二、动图演示 三、程序实现 参考: https://blog.csdn.net/weixin_4379原创 2021-12-12 12:13:34 · 1918 阅读 · 0 评论 -
【千锤百炼Python—9】:十大排序算法之计数排序
计数排序是排序算法系列的第九个要介绍的算法! 计数排序既属于非比较类排序也属于外部排序。 一、算法原理 1. 算法原理 计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 2. 算法步骤 步骤一:找出待排序的数组中最大和最小的元素; 步骤二:统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 步骤三:对所有的计数累加(从C中的第一个元素开始,每一项和原创 2021-12-12 14:25:07 · 2095 阅读 · 0 评论 -
【千锤百炼Python—10】:十大排序算法之桶排序
桶排序是排序算法系列的第十个要介绍的算法,也是最后一个要介绍的算法! 桶排序既属于非比较类排序也属于外部排序。 一、算法原理 1. 算法原理 参考: https://www.cnblogs.com/onepixel/articles/7674659.html https://www.runoob.com/w3cnote/bucket-sort.html 桶排序(Counting Sort)是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做原创 2021-12-12 14:37:15 · 2442 阅读 · 0 评论