为了账号安全,请及时绑定邮箱和手机立即绑定

关于一个数组的取出最大值和最小值的问题

关于一个数组的取出最大值和最小值的问题

烙印99 2019-02-15 22:22:30
代码如下        var b = [99,1,2,4,3,5,8,6,7,9,0,34,56,78,98,45,23,45,23.45];        function shuffle(arr){            return arr.sort(function(){                return Math.random() - 0.5;            });        }        var a = shuffle(b);        console.log(a);        var max = a[0];        var min = a[0];        var maxindex = 0;        var minindex = 0;        for (var i = 0; i < a.length; i++) {            if(max<a[i]){                max = a[i];                maxindex = i;            }else if(min>a[i]){                min = a[i]                minindex = i;            }        }        console.log(max==a[maxindex]);        console.log(min==a[minindex]);这段代码的判断感觉不是太正确,但是说不上来哪里出错了,结果是正确的,每次计算前都会打乱顺序一般正常逻辑这样写代码:
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

区别分析:


// 代码一:这段代码不够优化

if (max < a[i]) {

  max = a[i];

  maxindex = i;

}

// 首先,max >= min(这是一定的)

// 所以当 max < a[i]时,

// 就会有min <= max < a[i] => min < a[i],

// 即是不可能 min > a[i]

// 所以 if (max < a[i])和if (min > a[i])不可能同时执行

// 所以这两个 if 可以合并到下面的 if(max < a[i]) else if(min > a[i])

if (min > a[i]) {

  min = a[i]

  minindex = i;

}



// 代码二:这段代码更好

if (max < a[i]) {

  max = a[i];

  maxindex = i;

} else if (min > a[i]) {

  min = a[i]

  minindex = i;

}


查看完整回答
反对 回复 2019-02-17
  • 1 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信