1.疾速排序
取出数组第一个元素,以这个数为基准,比它小的放右边,比它大的放左边,而后对左右两边的数组别离递归,失去一个升序数组:
const quickSort = (arr) => {
if (arr.length <= 1) return arr
let firstItem = arr.shift()
let leftArr = []
let rightArr = []
for (let item of arr) {
if (item <= firstItem) {
leftArr.push(item)
} else {
rightArr.push(item)
}
}
return quickSort(leftArr).concat(firstItem, quickSort(rightArr))
}
console.log(quickSort([5, 17, 4, 22, 54, 55, 32]))
2.爬楼梯
爬楼梯每次能够爬 1 层或者 2 层,那么爬 n 层有多少种办法:
const climb = (n) => {
if (n === 1) return 1
if (n === 2) return 2
// 如果要爬到第 n 层,能够分为从第 n-1 层爬上去或者 n-2 层间接爬上去两种
return climb(n - 1) + climb(n - 2)
}
console.log(climb(3), climb(4), climb(5))
发表回复