促进当前的解决方案
冒泡排序的特征是一一处理的。我需要与后续数字进行比较。
为什么`len-i-1的数量?因为数组末尾的数字已经按顺序排列,因此确认位置没有变化。
为什么确认位置没有变化,因为在修复它之前,已经将它们与以前的数字进行了比较。
快速分类,使用分割法律的想法。
通过选择一个数字作为比较值,将对其他数字进行排序,分为>“比较”和“比较值,两个部分”。重复此步骤,直到要排序的数字本身,排序才完成。
希尔的分类是算法插入和排序。在改进了简单的插入排序之后,这是一个更有效的版本。
特征是使用增量,将几组分为一组子序列,然后插入后续序列的类型。
因为增量从大到小,所以它逐一减少,因此也称为减少的增量排序。
当心
在插入排序时,一次没有插入排序的组中的数字,而是每个组的插入分类。
执行插入时,使用Exchange方法
执行插入时,使用移动方法
促进当前的解决方案
合并排序,使用想法的划分将大数组分解为一个小数组,直到单个元素为止。
促进当前的解决方案
包装表示
逻辑结构的指示如下:
物理数据层的表示如下:
堆排序是使用数据结构-tree和管理数据的优化版本。
以许多榜首为例:
实现代码时,当构造大型的顶部稀释处时,左右树是以有序的方式制成的,然后逐渐扩展到整棵树上。
从第一个非叶子节点构建一个大顶堆,调整其位于的子树
调整下竞标1的子树后,继续调整子树的子树点(设置0)位于向上
最后,完成整棵树的调整,并建造许多顶桩。
将桩顶的最大值桩数与最后一个叶子数交换,并提取桩上的9。
目前,数字9是固定的,并将树切断了叶子,然后重建了很多顶堆。
建造大顶堆后,继续拉出桩的顶部8,然后重新建造一大堆。
最后,绘制了所有节点,并完成了分类。
以许多榜首为例,以对数组上升顺序进行排序
当心
树的最后一个非叶节点:
非叶节点的左叶节点:
非叶子节点的非第一节点:
计数排序的目的是为连续网格组成以存储数据的组成。
依次读取数组中的数字,然后将其存储在与其值相对应的较低出价中。
存储完成后,按空间和输出顺序读取每个网格的数据。
因此,计数排序所需的数据必须是整数。
枪管排序是计数排序的优化版本。原理是相同的:除法方法+空间更改时间。
对数组进行分组,减少排序数量,然后对子阵列进行排序,最后可以获得结果。
对于枪管中数字的排序,本文使用枪管排序递归。实际上,其本质是计算排序的降解。
通常从右到左的基础排序比较位置进度的数字,并将其存储在[0,9]的10桶中进行排序。
从低位置开始,将其比较一个,以便可以将每个位置(一个,十,一百,数千和千)的数字放在相应的存储桶中形成本地顺序。
为什么要10桶?因为小数号由0-9个数字组成,因此进步位置的相应数将落在该范围内,因此它是10桶。
有两种方法可以对基础进行分类:
当前的解决方案仅应用正整数的场景。
负面场景需要通过偏移解决。
作者编写的作者
最近,作者正在整理第一本电子书“外国面试手册”。有兴趣的学生可以注意?
喜欢我的文章的朋友可以按照以下方式关注我:
原始:https://juejin.cn/post/709943685388536869