Skip to content

Instantly share code, notes, and snippets.

@angle943
Created February 8, 2020 10:29
Show Gist options
  • Save angle943/9a1d4e304b02a6f0579c455eb0dda0d2 to your computer and use it in GitHub Desktop.
Save angle943/9a1d4e304b02a6f0579c455eb0dda0d2 to your computer and use it in GitHub Desktop.
Heap's Algorithm In Javascript
const getPermutations = arr => {
const output = [];
const swapInPlace = (arrToSwap, indexA, indexB) => {
const temp = arrToSwap[indexA];
arrToSwap[indexA] = arrToSwap[indexB];
arrToSwap[indexB] = temp;
};
const generate = (n, heapArr) => {
if (n === 1) {
output.push(heapArr.slice());
return;
}
generate(n - 1, heapArr);
for (let i = 0; i < n - 1; i++) {
if (n % 2 === 0) {
swapInPlace(heapArr, i, n - 1);
} else {
swapInPlace(heapArr, 0, n - 1);
}
generate(n - 1, heapArr);
}
};
generate(arr.length, arr.slice());
return output;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment