JS排序
做个小笔记,递归方面花了好些时间思考逻辑~
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20function quirk(arr){ //4.结束递归(当数组中小于等于一项,不用处理) if(arr.length <=1) return arr; //1.找到数组的中间项 let middleIndex = Math.floor(arr.length/2); let middleValue = arr.splice(middleIndex,1)[0]; //2.准备两个数组,循环剩下数组的每一项,比当前项小的放左边,反之放右边 let arrLeft = [],arrRight = []; for (let i = 0;i< arr.length;i++){ let item = arr[i]; item < middleValue? arrLeft.push(item) : arrRight.push(item); } //3.递归方式让左右两边的数组持续这样处理,一直到左右两边排序好为止(最后拼接成: 左+中+右) return quirk(arrLeft).concat(middleValue,quirk(arrRight)); } let arr = [12,8,15,16,1,24] arr = quirk(arr) console.log(arr);//[1,8,12,15,16,24]
复制代码
1
2
3
4
5
6
7
8
9
10//第二种方式:时间更快 function quick(x) { if (x.length <= 1) { return x; } return [...quick(x.filter(i=>i<x[0])),x[0],...quick(x.filter(i=>i>x[0]))] } let a = quick([12,8,15,16,1,24]) console.log(a)
最后
以上就是动人口红最近收集整理的关于JS快速排序的全部内容,更多相关JS快速排序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复