当前位置: 首页 > 网络应用技术

JavaScript实现了前十种排序算法(详细信息和文本)

时间:2023-03-06 23:17:42 网络应用技术

  促进当前的解决方案

  冒泡排序的特征是一一处理的。我需要与后续数字进行比较。

  为什么`len-i-1的数量?因为数组末尾的数字已经按顺序排列,因此确认位置没有变化。

  为什么确认位置没有变化,因为在修复它之前,已经将它们与以前的数字进行了比较。

  快速分类,使用分割法律的想法。

  通过选择一个数字作为比较值,将对其他数字进行排序,分为>“比较”和“比较值,两个部分”。重复此步骤,直到要排序的数字本身,排序才完成。

  希尔的分类是算法插入和排序。在改进了简单的插入排序之后,这是一个更有效的版本。

  特征是使用增量,将几组分为一组子序列,然后插入后续序列的类型。

  因为增量从大到小,所以它逐一减少,因此也称为减少的增量排序。

  当心

  在插入排序时,一次没有插入排序的组中的数字,而是每个组的插入分类。

  执行插入时,使用Exchange方法

  执行插入时,使用移动方法

  促进当前的解决方案

  合并排序,使用想法的划分将大数组分解为一个小数组,直到单个元素为止。

  促进当前的解决方案

  包装表示

  逻辑结构的指示如下:

  物理数据层的表示如下:

  堆排序是使用数据结构-tree和管理数据的优化版本。

  以许多榜首为例:

  实现代码时,当构造大型的顶部稀释处时,左右树是以有序的方式制成的,然后逐渐扩展到整棵树上。

  从第一个非叶子节点构建一个大顶堆,调整其位于的子树

  调整下竞标1的子树后,继续调整子树的子树点(设置0)位于向上

  最后,完成整棵树的调整,并建造许多顶桩。

  将桩顶的最大值桩数与最后一个叶子数交换,并提取桩上的9。

  目前,数字9是固定的,并将树切断了叶子,然后重建了很多顶堆。

  建造大顶堆后,继续拉出桩的顶部8,然后重新建造一大堆。

  最后,绘制了所有节点,并完成了分类。

  以许多榜首为例,以对数组上升顺序进行排序

  当心

  树的最后一个非叶节点:

  非叶节点的左叶节点:

  非叶子节点的非第一节点:

  计数排序的目的是为连续网格组成以存储数据的组成。

  依次读取数组中的数字,然后将其存储在与其值相对应的较低出价中。

  存储完成后,按空间和输出顺序读取每个网格的数据。

  因此,计数排序所需的数据必须是整数。

  枪管排序是计数排序的优化版本。原理是相同的:除法方法+空间更改时间。

  对数组进行分组,减少排序数量,然后对子阵列进行排序,最后可以获得结果。

  对于枪管中数字的排序,本文使用枪管排序递归。实际上,其本质是计算排序的降解。

  通常从右到左的基础排序比较位置进度的数字,并将其存储在[0,9]的10桶中进行排序。

  从低位置开始,将其比较一个,以便可以将每个位置(一个,十,一百,数千和千)的数字放在相应的存储桶中形成本地顺序。

  为什么要10桶?因为小数号由0-9个数字组成,因此进步位置的相应数将落在该范围内,因此它是10桶。

  有两种方法可以对基础进行分类:

  当前的解决方案仅应用正整数的场景。

  负面场景需要通过偏移解决。

  作者编写的作者

  最近,作者正在整理第一本电子书“外国面试手册”。有兴趣的学生可以注意?

  喜欢我的文章的朋友可以按照以下方式关注我:

  原始:https://juejin.cn/post/709943685388536869