前端必会算法
零零柒c
这个作者很懒,什么都没留下…
展开
-
算法 day5-简单快速排序
1、先从数列中取出一个数作为基准数 2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边 3、再对左右区间重复第二步,直到各区间只有一个数 var arr = [4,1,6,9,3,2,8,7]; function quickSort(arr) { if (arr == null || arr.length == 0) return []; //选班长 var leader = arr[0]; //小的站左边,大的站右边 var.原创 2021-01-29 16:32:03 · 65 阅读 · 0 评论 -
算法 day5- 选择排序
选择排序 选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。 var arr = [4, 1, 6, 9, 3, 2, 8, 7]; function compare(a, b) { if (a < b) return true; else return false;原创 2021-01-29 16:09:37 · 80 阅读 · 0 评论 -
算法 day5-冒泡排序
冒泡排序是通过两两比较 和进行交换 进行排序的 正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。 //排序不是比较大小。 //排序的本质是比较和交换。 这里是引用 到最后所有元素都是有序的了,这就是冒泡排序的整体思路。 var arr = [4,1,6,9,3,2,8,7]; function compare(a, b) {//比较之后需要得出是否需要交换 if (a > b) return true; else return fa原创 2021-01-29 15:58:31 · 86 阅读 · 0 评论 -
算法 day4-链表的逆置
链表的逆置 这样一个链表 我们想要将它逆置 相当于箭头换一个方向 通过递归的方式来进行逆置 function nizhi(root){ if(root.next.next == null){ //代表当前节点是倒数第二个节点 root.next.next = root; //让最后一个节点的next指向自己(倒数第二个) return root.next }else{ v原创 2021-01-28 23:38:23 · 146 阅读 · 0 评论 -
算法 day3-线性数据结构的递归遍历
数组递归遍历 var arr = [1,2,3,4,5,6,7,8] //递归遍历数组 function bianArr(arr,i){ //第一个参数是需要遍历的数组 //第二个参数的从哪一位开始遍历 if(arr == null || arr.length <= i) return; console.log(arr[i]); bianArr(arr,i+1) }原创 2021-01-27 23:00:57 · 79 阅读 · 0 评论 -
算法 day2-线性数据结构的遍历
数组的遍历 var arr = [1,2,3,4,5,6,7,8] function bianArr(arr){ if(arr == null) return; 算法题必须加上 否则报错什么都不算 for(var i = 0;i<arr.length;i++){ console.log(arr[i]); } } bianArr(arr) 链表的遍历 function Node(valu原创 2021-01-26 23:49:48 · 84 阅读 · 0 评论 -
算法day1-线性数据结构之链表
链表 链表的创建 function Node(value){ this.value = value this.next = null } var a = new Node(1) var b = new Node(2) var c = new Node(3) var d = new Node(4) a.next = b b.next = c原创 2021-01-25 22:48:06 · 145 阅读 · 0 评论