我们将使用 JavaScript 数组排序方法和切片技术按原始顺序查找数组的 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 个最大元素。
- 李>
创建结果数组以按原始顺序存储 k 个最大元素。
for循环用于循环原始数组arr。对于数组中的每个元素,代码使用 includes 方法检查它是否在 kMaxElements 数组中。
如果当前元素位于 kMaxElements 数组中,则将其添加到 result 数组中。 splice 方法用于从kMaxElements 数组中删除元素,以跟踪已添加到结果中的元素。
循环继续,直到找到所有 k 个最大元素并将其添加到结果数组中,或者到达原始数组的末尾。
最后一步是返回结果数组,其中包含原始数组中按原始顺序排列的最大 k 个元素。
以上就是JavaScript 程序按原始顺序查找数组的 k 个最大元素的详细内容,更多请关注编程之家其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。