
算法
文章平均质量分 69
想成为大佬的鸭子
这个作者很懒,什么都没留下…
展开
-
JavaScript实现排序算法(5)——选择排序,树形选择排序,堆排序
选择排序1 简单选择排序简单选择排序的核心思想是不断地找出未排序数列的最小值,将其添加到有序数列的尾部.(当然也可以选择最大值)1.1 算法过程(从小到大排序)1. 在待排数列中找到最小(或最大)元素,存放于有序数列的起始位置;2. 从余下待排数列中找到最小(或最大)元素,存放于有序数列的末尾(或开头);3. 重复第二步,直到所有元素排序完毕.1.2 排序演示对下面的数列进行简单选择排序5, 3, 2, 4, 1设置两个指针,指针a指向待排数列起始位,指针b指向待排数列末位.5,原创 2021-08-03 12:41:32 · 357 阅读 · 0 评论 -
JavaScript实现排序算法(4)——直接插入排序和希尔排序
插入排序1 直接插入排序直接插入排序的核心思想是,待排数列一个一个地插入有序数列,不断扩大有序数列,直到待排数列为空.1.1 算法过程(从小到大排序)1. 单个数字一定有序,因此数组首项可以看做一个有序数列,剩余的项组成待排数列;2. 从头到尾依次扫描待排数列,将扫描到的每个元素插入有序数列的适当位置.(如果待插入的元素与有序数列中的某个元素相等,则将待插入元素插入到相等元素的后面)1.2 排序演示对下面数列进行直接插入排序:5, 3, 2, 4, 1将数列首项5作为有序数列,待排数原创 2021-08-03 12:40:57 · 210 阅读 · 1 评论 -
JavaScript实现排序算法(3)——归并排序
归并排序归并排序的分治思想的典型应用,先分再合1 算法过程(从小到大排序)分治:1. 将原数列对半分为两个子数列,分别对两个子数列进行排序;2. 对子数列进行排序时,重复第一步;合并:1. 申请空间,大小为两个`已排序的`子数列之和,该空间用来存放合并后的数列;2. 设定两个指针,最初位置分别为两个子数列的起始位置;3. 比较两个指针所指向的元素,选择较小的元素放入第一步申请的空间,并移动该指针到下一位;4. 重复第三步,直至有一个子数列的指针超出数列尾;5. 将另一个子数列的元素直原创 2021-08-03 12:40:34 · 221 阅读 · 0 评论 -
JavaScript实现排序算法(2)——快速排序
快速排序快速排序是对冒泡排序的一种改进,被认为是目前最好的一种内部排序方法.快速排序的核心思想是分治思想,先分再合.1 算法过程(从小到大排序)1. 设定一个分界值(分界值任意,一般是数列首值,或数列中间值);2. 将不大于分界值的数置于分界值左边,大于分界值的数置于分界值右边,从而将数列以分界值为分割点,分割为左右两个数列.3. 对左右两个数列,分别重复上面的步骤.4. 左、右两个数列各数据排序完成后,整个数列的排序也就完成了2 排序演示对下面的数列进行快速排序3, 4, 6, 5原创 2021-08-03 12:40:03 · 186 阅读 · 0 评论 -
JavaScript实现排序算法(1)——冒泡排序
冒泡排序冒泡排序的核心思路,就是每一轮都把最大的数"冒"到数组顶部.1 算法过程(从小到大排序)1. 每一轮排序,都从第一个数开始,比较相邻的数;2. 如果第一个数比第二个数大,则交换两个数的位置;3. 如果第一个数不大于第二个数,则不交换位置,开始比较第二个数和第三个数;4. 以此类推,直到比完最后两个数,选出数列最大值置于末尾;5. 待排数列更新为原数列减去末尾值,开始下一轮排序,重复上面的步骤;2 排序演示对下面的数列进行冒泡排序:3, 4, 1, 5, 2第一轮排序开始,原创 2021-08-03 08:59:17 · 1613 阅读 · 0 评论