算法
liuhongyi0104
step is all
展开
-
js 二分查找的递归和while写法
1.递归 主要是控制三个变量 start end mid ,开始 结束 中间,反复就ok了。 const data = [18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] function Recursive(s,data){ let len = data.length let star...原创 2018-03-08 12:23:45 · 930 阅读 · 0 评论 -
js 快速排序
简单地说: 1. 选择一个基准数 key = arr[0] 2. 大于这个数 的放到key的右边,小于这个数的放在左边,这样数组分成了两个区间。 3. 分别在上述两个区间做第二步操作。 4. 一直重复,用递归的方式,直到区间的数为1时结束。 代码如下: let arr=[5,9,8,7,3,45,8,10,2,6] function qs(arr,left,right){ ...原创 2018-03-14 23:21:18 · 217 阅读 · 0 评论 -
js 归并算法
将数组递归分裂成单个元素 然后合并数组 let data3 = [14, 54, 73, 38, 39, 67, 75, 80, 50, 40, 96, 27, 105, 109, 77, 31] function breakArr (data,start,end){ if (start < end) { let mid = Math.floor((start + e...原创 2018-03-15 16:34:22 · 477 阅读 · 0 评论 -
js插入排序
原理 数组分为两部分, 一部分为有序数组,一部分为无序数组, 默认数组第一个元素为有序部分, 然后从无序的数组中依次取出元素, 插入有序数组时比较大小,再次变成一个有序数组, 最后有序部分就是排好序的, 无序部分就没了. 下面是js 代码 const data = [110, 86, 47, 34, 83, 11, 77, 100, 51, 21] function insrt(d...原创 2018-03-12 16:28:37 · 744 阅读 · 0 评论 -
js 堆排序
原文地址 我感觉这篇写的最容易的理解, 堆排序把我卡了挺久的,对于一个非科班的人, 其实算法和专业没啥关系,但科班的一般都有上过这门课. 主要是利用堆的性质 和 递归,也可以非递归 . 关键是从最后一个非叶节点入手 学了一段时间了,都没有把学习心得放网上,现在才发现这样不好不好。。。因此开了博客把自己的学习点滴或者感兴趣的内容记录下来,先讲讲堆排序吧。 根据《算法导论》,理解堆排序需...转载 2018-03-23 19:57:20 · 315 阅读 · 0 评论