![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
东都花神
这个作者很懒,什么都没留下…
展开
-
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 · 1969 阅读 · 0 评论 -
ES6算法---冒泡排序 Bubble Sort
原理:依次比较、交换相邻的元素大小时间复杂度最优时间复杂度:O(n^2)最坏时间复杂度:O(n)稳定性:稳定实现方式1function 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 · 5375 阅读 · 1 评论 -
ES6算法---插入排序 Insertion Sort
原理:默认 a[0] 为已排序数组中的元素,从 arr[1] 开始逐渐往已排序数组中插入元素,从后往前一个个比较,如果待插入元素小于已排序元素,则已排序元素往后移动一位,直到待插入元素找到合适的位置并插入已排序数组。经过 n - 1 次这样的循环插入后排序完毕。时间复杂度最优时间复杂度: O(n) 最坏时间复杂度: O(n^2) 稳定性:稳定实现方式1functio...原创 2018-05-05 23:56:08 · 758 阅读 · 0 评论 -
ES6算法---快速排序 Quicksort
原理:从数列中挑出一个元素,称为”基准”(pivot)重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。时间复杂度最优时间复杂度: O(nl...原创 2018-05-06 13:49:14 · 1614 阅读 · 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 · 274 阅读 · 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 · 505 阅读 · 0 评论 -
ES6算法系列
掌握常用的算法是从初级前端向中高级前端发展的必经之路,下面将常见的一些算法使用ES6重写一遍,一共6分为6篇,下面是链接地址:ES6算法—冒泡排序 ES6算法—选择排序 ES6算法—插入排序 ES6算法—快速排序 ES6算法—希尔排序 ES6算法—归并排序后续的补充都会在github上进行,地址: 点我...原创 2018-05-07 14:08:25 · 943 阅读 · 0 评论