首頁 > web前端 > js教程 > 如何在 JavaScript 中高效產生整數陣列的所有排列?

如何在 JavaScript 中高效產生整數陣列的所有排列?

Mary-Kate Olsen
發布: 2024-12-14 11:30:12
原創
729 人瀏覽過

How Can I Efficiently Generate All Permutations of an Integer Array in JavaScript?

在JavaScript 中辨識陣列排列

要計算整數陣列的所有排列,在採用基於字串的演算法時需要考慮一些細微演算法差別處理數組。

原始函數(為字串設計)透過字元追蹤字元和usedChars 陣列。它迭代每個字符,將其添加到usedChars中,並對剩餘字符遞歸調用permute。

適應整數

為了容納整數數組,需要修改:

  1. 需要進行修改:
  2. 用整數組🎜> 用整數組取代chars 和usedChars 來追蹤元素。
  3. 拼接與連接: 使用 splice 和 concat 操作整數陣列而不是字串。
分割和連接:

刪除字串分割和連接操作,因為它們不適用到整數。

修訂後的數組函數

function permute(inputArr) {
    const permArr = [];
    const usedInts = [];

    for (let i = 0; i < inputArr.length; i++) {
        const el = inputArr.splice(i, 1);
        usedInts.push(el);
        if (inputArr.length === 0) {
            permArr.push(usedInts.slice());
        }
        permute(inputArr.slice());
        inputArr.splice(i, 0, el);
        usedInts.pop();
    }

    return permArr;
}
登入後複製

下面修訂後的函數解決了上述調整:

用法範例

console.log(permute([1, 2, 3, 4])); // [[1, 2, 3, 4], [1, 2, 4, 3], ...]

console.log(permute([5, 6, 7])); // [[5, 6, 7], [5, 7, 6], ...]
登入後複製
使用修改後的函數,我們可以計算整數陣列的排列:

以上是如何在 JavaScript 中高效產生整數陣列的所有排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板