JavaScript求一維陣列的第三大值
阿新 • • 發佈:2018-12-12
求一個足夠長的一維陣列中第三大值,陣列中元素全是number型別的
1、使用排序的方法
可以降序或升序排序,這種方法可以求得任意第幾大或第幾小的值
// 排序的方法有很多,以氣泡排序 降序為例: var arr = [6, 10, 9, 3, 8, 15, 11, 16, 14, 19, 1, 7, 2, 18, 17]; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr.length; j++) { if (arr[j] < arr[j + 1]) { var item = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = item; } } } console.log(arr); console.log("第三大值為" + arr[2]);
2、假設並比較,先求最大值,然後求次大值,最後求第三大值
但這種方法要遍歷陣列三次
var arr = [6, 10, 9, 3, 8, 15, 11, 16, 14, 19, 1, 7, 2, 18, 17]; // 求最大值 var fMax = arr[0]; for (let i = 1; i < arr.length; i++) { if (fMax < arr[i]) { fMax = arr[i]; } } console.log("最大值為:" + fMax); // 求次大值 var sMax = arr[0]; for (let i = 1; i < arr.length; i++) { if (sMax < arr[i] && fMax > arr[i]) { sMax = arr[i]; } } console.log("次大值為:" + sMax); // 求第三大值 var tMax = arr[0]; for (let i = 1; i < arr.length; i++) { if (tMax < arr[i] && sMax > arr[i]) { tMax = arr[i]; } } console.log("第三大值為:" + tMax);
3、假設並比較 遍歷陣列一次 的方法
var arr = [6, 10, 9, 3, 8, 15, 11, 16, 14, 19, 1, 7, 2, 18, 17]; // 求最大值和次大值 var firstMax = arr[0]; var secondMax = arr[1]; for (let i = 1; i < arr.length; i++) { if(firstMax < arr[i]){ secondMax = firstMax; firstMax = arr[i]; }else if(secondMax < arr[i] && firstMax > arr[i]){ secondMax = arr[i]; } } console.log("最大值為:" + firstMax); console.log("次大值為:" + secondMax); // 求最大值、次大值和第三大值 var fMax = arr[0]; var sMax = arr[1]; var tMax = arr[2]; for (let i = 1; i < arr.length; i++) { if (fMax < arr[i]) { tMax = sMax; sMax = fMax; fMax = arr[i]; } else if (sMax < arr[i] && fMax > arr[i]) { tMax = sMax; sMax = arr[i]; } else if(tMax < arr[i] && sMax > arr[i]) { tMax = arr[i]; } } console.log("最大值為:" + fMax); console.log("次大值為:" + sMax); console.log("第三大值為:" + tMax);