我們將使用 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 個最大元素。
slice方法用於提取排序數組的前 k 個元素並將它們儲存在新數組 kMaxElements 中。
李>建立結果陣列以原始順序儲存 k 個最大元素。
for迴圈用於循環原始陣列arr。對於陣列中的每個元素,程式碼使用 includes 方法檢查它是否在 kMaxElements 陣列中。
如果目前元素位於 kMaxElements 陣列中,則將其新增至 result 陣列中。 splice 方法用於從kMaxElements 陣列中刪除元素,以追蹤已新增至結果中的元素。
循環繼續,直到找到所有 k 個最大元素並將其新增至結果陣列中,或到達原始陣列的末端。
最後一步是傳回結果數組,其中包含原始數組中按原始順序排列的最大 k 個元素。
以上是JavaScript 程式會以原始順序找出陣列的 k 個最大元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!