代码如下 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;
}
添加回答
举报
0/150
提交
取消