![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 81
阿鲁拔
宁静致远
展开
-
快速排序
简要步骤 讲排序肯定有必要讲一下快速排序,快排是因为其比较实用的分治思想,所以经常会在面试时遇到,它的基本思想是:第一步:选择基准点,通过一趟排序将准备排序的数据分为两部分,一部分比基准点都小,另一部分比基准点都大;第二步:按照第一步的方法对两个部分分别进行划分,直到数据不能被划分。 接下来,我们就通过图片来了解一下快速排序的第一步,如何将待排序数据 s[ n ]划分为两个部分:原创 2017-07-30 09:57:56 · 287 阅读 · 0 评论 -
简单选择排序
简要步骤 简单选择排序与冒泡排序的区别在于:简单选择排序直接将待排位置的数据与其他未排位置的数据比较,若为反序则交换;而冒泡排序则是将相邻的反序数据进行交换,所以在性能上简单选择排序是略优于冒泡的。 初始序列:{ 4, 6, 3, 0, 2, 5, 1 } 可以通过比较简单选择排序和冒泡排序在同一初始序列上的第一轮扫描过程,不难发现前者的优势,下面是冒泡排序的博客地址: htt原创 2017-08-05 08:50:20 · 420 阅读 · 0 评论 -
冒泡排序
简要步骤 冒泡排序通过相邻数据的比较寻找较优值,若与要求的顺序相反则交换位置。 初始序列:{ 4, 6, 3, 0, 2, 5, 1 } 图解说明中只画出了第一轮冒泡情况,也就是i = 0的情况。我们可以发现,每一轮冒泡就是通过相邻数据的比较,把较小值逐渐往上推。第一轮将第一小的值放在i = 0的位置,第二轮将第二小的值放在i = 1的位置,依次类推获得最终排序结果。原创 2017-08-05 08:40:22 · 454 阅读 · 0 评论 -
直接插入排序
简要步骤 直接插入排序正如名字所示,它的工作过程就是:对于一个待插数据,将其与前面的数据依次比较,直至找到正确的插入位置。 初始序列:{ 4, 6, 3, 0, 2, 5, 1 } 和简单选择排序相比,直接插入排序当找到正确的位置时,扫描就停止了;而简单选择排序即使在正确的位置放上了正确的数,它也会继续扫描完,因为它不知道后面有没有数比这个数好。例如序列{1, 2, 4, 5, 3}原创 2017-08-05 09:09:19 · 1205 阅读 · 0 评论 -
希尔排序
简要步骤 希尔排序是一种直接插入排序的优化排序方法。它通过设定的步长进行分组,对每组中的数据进行直接插入排序,随着步长的减少,每组中的数据也随着增加,直到步长减少为1,那么整组数据也就变为有序的了。 初始序列:{ 4, 6, 3, 0, 2, 5, 1 } 大体上来说,希尔排序就是通过以一定步长分组后对数据进行预处理,来减少最后步长为1时的工作量。 性能分析原创 2017-08-05 09:23:53 · 384 阅读 · 0 评论 -
堆排序
简要步骤 堆是一棵完全二叉树。 其中每个节点的值都不大于其父节点的堆,被称为大根堆; 其中每个节点的值都不小于其父节点的堆,被称为小根堆; 在非降序排列中,需要使用的是大根堆。以上图中的大根堆序列arr[7]为例,arr[0]的左孩子是arr[1],右孩子是arr[2];arr[1]的左孩子是arr[3],右孩子是arr[4]。所以arr[i]的左孩子节点是arr[2*原创 2017-08-05 09:32:39 · 1105 阅读 · 0 评论 -
归并排序
简要步骤 将待排序列arr[n]看作是n个长度为1的有序序列,将相邻的有序序列合并成n/2个长度为2的有序序列,再将相邻的有序序列合并,直至最后得到一个长度为n的有序序列。 初始序列:{ 4, 6, 3, 0, 2, 5, 1 } 两个相邻序列合并过程详解: 性能分析 时间复杂度:归并排序的形式和二叉树类似,遍历次数就是二叉树的深度,所以时间复原创 2017-08-05 09:46:25 · 269 阅读 · 0 评论 -
基数排序
简要步骤 与计数排序一样,基数排序也属于分布类排序。它设定一些基数(也被称为“桶”),通过将待排数据分配至“桶”中进行排序。以整数为例,我们将基数设定为0~9,根据高低位遍历顺序的不同,基数排序分为最高位优先(MSD)和最低位优先(LSD),MSD适合大位数的数列排序,LSD则相反,本文采用的是LSD基数排序。 初始序列{0, 11, 51, 22, 74, 122, 341, 4, 71,原创 2017-08-13 09:01:11 · 248 阅读 · 0 评论 -
计数排序
简要步骤 计数排序顾名思义,就是通过对待排序列计数来达到排序的目的。直接上图 因为计数排序针对小范围内的整数效果比较好(能够转化为整数的数据也能适用), 所以将初始序列设定为{0, 1, 5, 2, 4, 2, 3, 4, 1, 2} 性能分析 时间复杂度:O( N+k ),k为整数的范围。但是当满足以下两个条件时为O( N ),分别为1. 输入的线性表的元素原创 2017-08-06 13:56:07 · 250 阅读 · 0 评论