求最小值
let min = (numbers) => {
if (numbers.length>2){
return min(
[numbers[0],min(numbers.slice(1))]
)
}else{
return Math.min.apply(null,numbers)
}
}
排序算法
实现数组排序(思路:递归)
let sort = (numbers) => {
if (numbers.length>2){
let index = minIndex(numbers)
let min = numbers[index]
numbers.splice(index,1)
return [min].concat(sort(numbers))
}else{
return numbers[0] < numbers[1] ? numbers : numbers.reverse()
}
}
let minIndex = (numbers) => numbers.indexOf(min(numbers))
let min = (numbers) => {
if (numbers.length>2){
return min(
[numbers[0],min(numbers.slice(1))]
)
}else{
return Math.min.apply(null,numbers)
}
}
归并排序
let mergrSort = arr => {
let k = arr.length
if(k===1){return arr}
let left =arr.slice(0,Math.floor(k/2))
let right =arr.slice(Math.floor(k/2))
return merge(mergeSort(left),mergeSort(right))
}
let merge = (a,b)=>{
if(a.length === 0) return b
if(b.length === 0) return a
return a[0] > b[0] ?
[b[0]].concat(merge(a,b.slice(1))) :
[a[0]].concat(merge(a.slice(1),b))
}