
算法
东都花神
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ES6算法---选择排序 Selection Sort
原理:每一次内循环遍历寻找最小数的下标min,并在这次内循环结束后交换 min 和 j 的位置。 时间复杂度 最优时间复杂度:O(n2) 最坏时间复杂度:O(n2) 稳定性:不稳定 function selection_sort(arr) { let len = arr.length for (let j = 0; j < len-1; j++) { let...原创 2018-05-05 22:25:15 · 2044 阅读 · 0 评论 -
ES6算法---冒泡排序 Bubble Sort
原理:依次比较、交换相邻的元素大小 时间复杂度 最优时间复杂度:O(n^2) 最坏时间复杂度:O(n) 稳定性:稳定 实现方式1 function buddle_sort(arr) { let len = arr.length - 1 for (let j = 0; j &amp;lt; len; j++) { for (let i = 0; i &amp;lt; len - ...原创 2018-05-05 21:27:45 · 5466 阅读 · 1 评论 -
ES6算法---插入排序 Insertion Sort
原理:默认 a[0] 为已排序数组中的元素,从 arr[1] 开始逐渐往已排序数组中插入元素,从后往前一个个比较,如果待插入元素小于已排序元素,则已排序元素往后移动一位,直到待插入元素找到合适的位置并插入已排序数组。经过 n - 1 次这样的循环插入后排序完毕。 时间复杂度 最优时间复杂度: O(n) 最坏时间复杂度: O(n^2) 稳定性:稳定 实现方式1 functio...原创 2018-05-05 23:56:08 · 815 阅读 · 0 评论 -
ES6算法---快速排序 Quicksort
原理: 从数列中挑出一个元素,称为”基准”(pivot) 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。 时间复杂度 最优时间复杂度: O(nl...原创 2018-05-06 13:49:14 · 1700 阅读 · 0 评论 -
ES6算法---希尔排序 Shell Sort
原理:插入排序的改进版,克服了插入排序每次只能移动相邻位置的缺陷,希尔排序每次可以移动gap个位置 时间复杂度 最优时间复杂度: O(nlogn) 最坏时间复杂度: O(n^2) 稳定性:不稳定 实现方式 function shell_sort(arr) { let len = arr.length let gap = Math.floor(len / 2) w...原创 2018-05-06 13:51:46 · 339 阅读 · 0 评论 -
ES6算法---归并排序 Merge Sort
原理:归并排序使用分而治之的思想,以折半的方式来递归/迭代排序元素,利用空间来换时间,做到了时间复杂度 O(n·log(n)) 的同时保持了稳定。 时间复杂度 最优时间复杂度: O(nlogn) 最坏时间复杂度: O(nlogn) 稳定性:稳定 实现方式 function merge_sort(arr) { let len = arr.length if (len &l...原创 2018-05-07 14:01:36 · 547 阅读 · 0 评论 -
ES6算法系列
掌握常用的算法是从初级前端向中高级前端发展的必经之路,下面将常见的一些算法使用ES6重写一遍,一共6分为6篇,下面是链接地址: ES6算法—冒泡排序 ES6算法—选择排序 ES6算法—插入排序 ES6算法—快速排序 ES6算法—希尔排序 ES6算法—归并排序 后续的补充都会在github上进行,地址: 点我...原创 2018-05-07 14:08:25 · 1047 阅读 · 0 评论