算法入门1

97 阅读1分钟

写一个 min 函数,要求 min(numbers) 能返回数组 numbers 中的最小数字

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

写出一个 sort 函数,要求 sort(numbers) 能返回一个把 numbers 从小到大排列的数组(可以添加多余的帮助函数)

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 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()
	}
}