最小值和排序

求最小值

let min = (numbers) => {
if(numbers.length > 2){
return min([numbers[0],min(numbers.slice(1))])
}else{
return Math.min.apply(null,numbers)
}
}

任意长度的数组排序

总结:每次找到最小的数放在前面,然后对后面的数做同样的事情。
代码实现 从小到大

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)
}
}
var sort = (numbers) => {
if(numbers.length > 2){
let index = minIndex(numbers)
let min = numbers[index]
console.log(`min: ${min}`)
numbers.splice(index,1)
return [min].concat(sort(numbers))
}else{
return numbers[0]<numbers[1] ? numbers : numbers.reverse()
}
}

代入法理解
sort[12,5,8,7,9]
=[5]+(sort(12,8,7,9))
=[5]+([7]+(sort(12,8,9)))
=[5]+([7]+([8]+(sort(12,9))))
=[5]+([7]+([8]+([9,12])))
=[5]+([7]+([8,9,12]))
=[5]+([7,8,9,12])
=[5,7,8,9,12]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值