RainZhai / rainzhai.github.com

宅鱼
http://rainzhai.github.io
Apache License 2.0
2 stars 0 forks source link

数组最小最大数的最优算法是什么? #22

Open RainZhai opened 6 years ago

RainZhai commented 6 years ago

如果需要同时找出最小和最大数,可以采用”逐对“处理的方法。维护min和max两个变量,每次读进两个数,比较它们的大小,小的放进min, 大的放进max。这样每次循环需要3次比较,经历n/2个循环,一共约有1.5n次比较.。相比之下,分别求最大最小数的方法需要2n - 2次比较,理论上不如以上方法效率高。

RainZhai commented 6 years ago

1.es6拓展运算符...

Math.max(...arr) 2.es5 apply(与方法1原理相同)

Math.max.apply(null,arr) 3.for循环

let max = arr[0]; for (let i = 0; i < arr.length - 1; i++) { max = arr[i] < arr[i+1] ? arr[i+1] : arr[i] } 4.数组sort()

arr.sort((num1, num2) => { return num1 - num2 < 0 }) arr[0] 5.数组reduce

arr.reduce((num1, num2) => { return num1 > num2 ? num1 : num2} )