学习递归之后,发现可以解决很多问题,之前第一次接触二分法排序的时候,觉得很复杂,现在觉得就这,就这。
分析一下, 所谓的二分法就是拆中分类
主要就是分为左右两个数组, 最后合并成一个数组
// 二分法排序
let arr = [3, 4, 5, 67, 43, 32]
let fn = (arr) => {
if (!arr.length) {
return
}
// 取出中间值
let val = Math.floor(arr.length / 2)
let c = arr.splice(val, 1)
let leftArr = []
let rightArr = []
arr.forEach((v) => {
if (v > val) {
rightArr.push(v)
} else {
leftArr.push(v)
}
})
return fn(leftArr).concat(val, fn(rightArr))
}
console.log('fn(arr)', fn(arr));