![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
caicsama
这个作者很懒,什么都没留下…
展开
-
KMP字符串匹配-JS
当串p与串t匹配的时候,返回的首次匹配的位置是i-j如果遍历完,不匹配(i=n,j<m)i-j>n-m任意j,考察集合N(p,j)={0<=t<j | p[0,t) == p[j-t,j) }即,p[j]的前缀p[0,j)中,所有匹配的真前缀和真后缀长度为next(j)长度为t的前缀p[0,t)与长度为t的后缀p[j-t,j)必然相等如果i、j分别指向的元素不...转载 2020-04-12 23:56:13 · 106 阅读 · 0 评论 -
二分查找以及变体-JS
版本变化查找的区间为[lo,hi)因此在遍历过程中区间的范围选哟是版本1数组分成三段:e小于arr[mid] [li,mid)e等于arr[mid] midarr[mid]小于e (mid,li]function binarySearch1(arr,e){ var lo=0,hi=arr.length; //最终区间的长度是[lo,lo) 为空 while(lo<...转载 2020-04-11 20:55:01 · 124 阅读 · 0 评论 -
广度优先遍历、深度优先遍历-JS
使用邻接表存储图广度优先遍历A->B->C->D->E->F遍历A元素的时候,将A元素的邻接节点(B、C)插入数组,访问完B,将B的邻接表(C、D)插入数组,C已经在遍历表中了,因此不添加到遍历表中,接下来访问C,将邻接表(D、E)插入遍历数组中,同样,D已经在遍历表中,就不添加进去,避免重复访问。遍历的过程没有重复元素访问栈、记录表//邻接点制成的表...原创 2020-04-10 00:39:46 · 943 阅读 · 0 评论 -
先序遍历、中序遍历、后续遍历-JS
V:表示树的根节点L:树的左子树R:树的右子树先序遍历:V | L | R访问根节点,访问左子树,访问右子树。右顾左盼沿着左子树的方向,将右子树推入栈中(后进先出),将左孩子推入栈中使用递归的方式遍历:function preorder(root){ //递归基 if(!root) return; var arr=[]; arr.push(root.val); pr...转载 2020-04-09 14:18:04 · 468 阅读 · 0 评论 -
冒泡排序、选择排序、快速排序、插入排序、堆排序、归并排序-JS
冒泡排序遍历数组,比当前元素小时交换位置,当遇到本轮中的最大元素之后,后面的交换就不会变化每次循环就能得到本轮循环中的最大元素function findMAx(arr) { var n = arr.length - 1; //设置flg标记 序列是否有序 //只要序列有序 flag等于上一个循环的flag=true,不会进入if语句,那么flag=false,退出fo...原创 2020-04-07 14:34:51 · 195 阅读 · 1 评论