- 博客(6)
- 收藏
- 关注
原创 JavaScript 数据结构与算法十大经典排序算法-快速排序(六)
优点:快速排序的特点就是快,而且效率高。 缺点:需要另外声明俩个数组,浪费了内存空间 原理 先找到一个基准点(一般在数组的中部),然后把基准点从数组中取出,数组剩余元素依次与该基准点做对比,如果比它小,放左边,反之,放右边 左右分别用一个空数组去存储比较后的元素 最后递归上述操作,直到数组长度 <= 1 代码实现 const quickSort = arr => { if ( a...
2019-08-21 13:40:56 155
原创 JavaScript 数据结构与算法十大经典排序算法-归并排序(五)
原理 归并排序,是先把数组从中间分成两部分,然后对前后两部分分别排序,再将排序好的连部分合并在一起。 核心思想是将两个有序的数列合并成一个大的有序序列。通过递归,层层合并,即为归并 ...
2019-08-21 10:32:28 179
原创 JavaScript 数据结构与算法十大经典排序算法-选择排序(四)
原理 选择排序实现思路有点类似插入排序,也分排序区间和为排序区间。选择排序每次会从未排序区间中找到最小(最大)的元素,将其放到已排序的末尾 步骤 首先在未排序的序列中找到最小(最大)元素,存放到排序序列的起始位置(也是末尾,因为是第一次) 再从剩余未排序元素中继续寻找最小(最大)元素,然后放到已排序序列末尾 重复第二步,直到所有元素都排序完毕 实现 const selectSort = arr...
2019-08-08 11:14:36 142
原创 JavaScript 数据结构与算法十大经典排序算法-希尔排序(三)
一、希尔排序 希尔排序其实也是插入排序的一种,也叫缩小增量排序。 原理 先将整个待排序的记录序列分割成若干子序列 分别进行直接插入排序 待整个序列中的记录基本有序时,在对全体记录进行一次直接插入排序 简单来说,就是按一定的间隔对数列进行分组,然后在每一个分组中做直接插入排序,随后逐次缩小间隔,在每一个分组中做插入排序…直到间隔等于1,做一次插入排序后结束。 希尔排序的核心在于间隔序列的设定,...
2019-08-07 17:20:27 175
原创 JavaScript 数据结构与算法十大经典排序算法-插入排序(二)
插入排序分为 直接插入排序 和优化后的 折半插入排序 与 希尔排序,通常所说的是直接插入排序。 一、直接插入 原理 通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。 步骤 从第一个元素开始,该元素认为是已经被排过序的 取出下一个元素,在已排序的元素序列中从后向前做对比 如果对比的元素(已排序)大于新元素,将该元素移到下一个位置,也就是往后移一位 重复步骤 3 ...
2019-08-05 23:49:40 116
原创 JavaScript 数据结构与算法十大经典排序算法-冒泡排序(一)
实现原理 简单来说就是实现的思想 冒泡排序只会操作相邻的两个数据 每次冒泡操作都会对相邻两个元素进行比较,看是否满足大小关系要求。如果不满足就让他俩互换 一次冒泡会让至少一个元素移动到它应该再度位置,重复 n 次,就完成了 n 个数据的排序工作 特点 优点:排序算法的基础,简单使用易于理解 缺点:比较次数多,效率较低 实现 //冒泡排序(未优化) const buddleSort = ar...
2019-08-02 18:18:25 197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人