JavaScript 以原始顺序查找数组的k个最大元素

JavaScript 以原始顺序查找数组的k个最大元素

我们将使用JavaScript数组的sort方法和切片技术来查找数组中的k个最大元素,并保持它们的原始顺序。首先,我们将数组按降序排序,然后从开头切片到第k个索引以获取k个最大元素。保持元素的原始顺序,可以保持数据的重要性和上下文,从而更容易分析和解释结果。

方法

在原始顺序中查找数组的k个最大元素的方法如下所示 −

  • 创建一个新的空数组来存储k个最大元素。

  • 遍历输入数组,并将每个元素与新数组中的元素进行比较。

  • 如果新数组少于k个元素,只需将当前元素添加到新数组中。

  • 如果新数组有k个元素,将当前元素与新数组中的最小元素进行比较。

  • 如果当前元素大于最小元素,则删除最小元素并将当前元素添加到新数组中。

  • 最后,以它们在输入数组中出现的原始顺序返回包含k个最大元素的新数组。

示例

这是一个完整的JavaScript工作示例,用于以原始顺序查找数组中的k个最大元素−

function findKMaxElements(arr, k) {

   // Create a copy of the original array
   let sortedArr = [...arr];

   // Sort the copy of the array in descending order
   sortedArr.sort((a, b) => b - a);

   // Slice the first k elements of the sorted array
   let kMaxElements = sortedArr.slice(0, k);

   // Create a result array to store the k maximum elements in their original order
   let result = [];

   // Loop through the original array
   for (let i = 0; i < arr.length; i++) {

      // Check if the current element is in the kMaxElements array
      if (kMaxElements.includes(arr[i])) {

         // If yes, add it to the result array
         result.push(arr[i]);

         // Remove the element from the kMaxElements array

         // to keep track of the elements that have already been added to the result
         kMaxElements.splice(kMaxElements.indexOf(arr[i]), 1);

         // If the kMaxElements array is empty, it means all k maximum elements have been found
         if (kMaxElements.length === 0) {
            break;
         }
      }
   }

   // Return the result array
   return result;
}
// Test the function with an example array
let arr = [3, 2, 1, 4, 5];
let k = 3;
console.log(findKMaxElements(arr, k));

说明

  • 函数 findKMaxElements 接受一个数组 arr 和一个整数 k 作为输入。

  • 第一步是创建原始数组 arr 的副本,并使用 sort 方法按降序对其进行排序。这将使我们能够轻松找到前k个最大元素。

  • 使用 slice 方法提取排序后数组的前k个元素,并将它们存储在新数组 kMaxElements 中。

  • 创建一个 result 数组以原始顺序存储k个最大元素。

  • 使用for循环遍历原始数组 arr 。对于数组中的每个元素,代码使用 includes 方法检查它是否在 kMaxElements 数组中。

  • 如果当前元素在 kMaxElements 数组中,则将其添加到 result 数组中。使用 splice 方法从 kMaxElements 数组中删除该元素,以跟踪已添加到结果中的元素。

  • 循环继续,直到找到并添加了所有k个最大元素到 result 数组中,或者到达原始数组的末尾。

  • 最后一步是返回包含原始数组的k个最大元素的 result 数组,按照它们的原始顺序排列。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程