Pada artikel Data Struktur dan Algoritma ini Konsep Koding akan berbagi tutorial mengenai Next Permutaion.

Tutorial Algoritma Next Permutation Dengan Javascript


Apa Itu Next Permutation?

Permutasi array bilangan bulat adalah pengaturan anggotanya menjadi urutan atau urutan linier.

Misalnya, untuk arr = [1,2,3], berikut adalah semua permutasi dari arr: [1,2,3], [1,3,2], [2, 1, 3], [2, 3, 1], [3,1,2], [3,2,1].

Permutasi berikutnya dari array bilangan bulat adalah permutasi bilangan bulat berikutnya yang secara leksikografis lebih besar. Secara lebih formal, jika semua permutasi dari array diurutkan dalam satu wadah menurut urutan leksikografisnya, maka permutasi berikutnya dari larik tersebut adalah permutasi yang mengikutinya dalam wadah yang diurutkan. Jika pengaturan seperti itu tidak memungkinkan, larik harus diatur ulang sebagai urutan serendah mungkin (yaitu, diurutkan dalam urutan menaik).


Memulai Kode :

Buat sebuah file dengan nama index.js kemudian ketikan kode di bawah ini :

var nextPermutation = function nextPermutation (nums) {

    if (nums.length <= 1) return;


    let leftHandSwap;


    // Loop through the provided numbers from right to left (excluding the first as we need something to compare it to)

    for (let i = nums.length - 2; i >= 0; i--) {

        // Check if this number is lower than the previous one (marks our left-hand swap)

        if (nums[i] < nums[i + 1]) {

            leftHandSwap = i;

            break;

        }

    }


    // Loop through the provided numbers from right to left

    for (let i = nums.length - 1; i > leftHandSwap; i--) {

        // If the number is bigger than the left-hand one

        if (nums[i] > nums[leftHandSwap]) {

            // Swap the numbers round

            [nums[i], nums[leftHandSwap]] = [nums[leftHandSwap], nums[i]];


            // Reverse the rest of the array

            let chopped = nums.splice(leftHandSwap + 1);

            chopped.sort((a, b) => a - b);

            nums.push(...chopped);

            return;

        }

    }


    // Right-hand swap not found, return lowest permutation instead

    nums.sort((a, b) => a - b);

};


Sekian semoga artikel ini dapat bermanfaat dan membantu kamu yang sedang mempelajari Algoritma dan Struktur data.

Baca Juga Artikel Konsep Koding lainnya: