JavaScript 如何从数组中获取n个最大元素

JavaScript 如何从数组中获取n个最大元素

在本文中,我们将看到如何使用JavaScript从数组中查找n个最大元素。

示例:

输入:arr = [1, 2, 3, 4, 5, 6],n = 3;

输出:4, 5, 6

解释:在给定的数组中,我们将看到3个最大的元素是4, 5, 6。

输入:arr = [5, 76, 32, 98, 52, 57],n = 2;

输出:98, 76

有两种方法可以找到解决方案,我们将逐个学习它们:

蛮力法: 我们首先创建一个名为largArr的数组,其长度等于n。然后,对于largArr的每个索引,我们逐个从数组中填充元素。

示例

如果我们有n=3,那么数组 largArr 的长度将等于3,然后我们将逐个运行 for循环 将元素填充到largArr中。

let largArr = new Array();
let arr = new Array(93, 17, 56, 91,
          98, 33, 9, 38, 55, 78, 29, 81, 60);
 
function largest() {
    largArr[0] = 0;
    largArr[1] = 0;
    largArr[2] = 0;
 
    for (i = 0; i < arr.length; i++) {
        if (arr[i] > largArr[0]) {
            largArr[0] = arr[i];
 
        }
    }
 
    for (i = 0; i < arr.length; i++) {
        if (arr[i] > largArr[1]
            && arr[i] < largArr[0]) {
            largArr[1] = arr[i];
 
        }
    }
 
    for (i = 0; i < arr.length; i++) {
        if (arr[i] > largArr[2]
            && arr[i] < largArr[1]) {
            largArr[2] = arr[i];
        }
    }
 
    console.log(largArr[0]);
    console.log(largArr[1]);
    console.log(largArr[2]);
}
 
largest();

输出结果:

98 
93 
91

优化解决方案: 我们首先按递减顺序对数组进行排序,然后在长度为n的循环中打印前n个最大元素。

示例:

let largArr = new Array();
let arr = new Array(93, 17, 56, 91, 98,
          33, 9, 38, 55, 78, 29, 81, 60);
 
findLargest3();
 
function findLargest3() {
    arr.sort((a, b) => a < b ?
        1 : a > b ? -1 : 0);
 
    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);
 
    console.log(arr.slice(0, 3));
}

输出:

 98
 93
 91
[98,93,91]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程