Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var swap = function (array, pos1, pos2) {
- var temp = array[pos1];
- array[pos1] = array[pos2];
- array[pos2] = temp;
- };
- var heapsPermute = function (array, n) {
- n = n || array.length; // set n default to array.length
- if (n === 1) {
- return array;
- } else {
- for (var i = 1; i <= n; i += 1) {
- heapsPermute(array, n - 1);
- if (n % 2) {
- var j = 1;
- } else {
- var j = i;
- }
- swap(array, j - 1, n - 1); // -1 to account for javascript zero-indexing
- }
- }
- };
- input = heapsPermute([1,2,3], 3)
- prvo pokretanje: array - [1,2,3], n - 3
- n = 3;
- if preskacemo, idemo u else
- for (i = 1; i <= 3; i += 1) {
- heapsPermute([1,2,3], 2) -> drugo pokretanje
- drugo pokretanje: array - [1,2,3], n - 2
- n = 2
- if preskacemo, idemo u else
- for (i = 1; i <= 2; i += 1) {
- heapsPermute([1,2,3], 1) -> trece pokretanje
- trece pokretanje: array - [1,2,3], n - 1
- n = 1 -> vracamo array [1,2,3] i nastavljamo dalje //output [1,2,3]
- n%2 = 0, dakle j = i (u ovom slucaju 1) - swap (0,1), dakle sada je array [2,1,3]
- <-sledeci korak for, i = 2, n = 2, array = [2,1,3]->
- heapsPermute([2,1,3],1) -> cetvrto pokretanje
- cetvrto pokretanje: array - [2,1,3], n - 1
- n = 1 -> vracamo array [2,1,3] i nastavljamo dalje //output [2,1,3]
- n%2 = 0, dakle j = i (u ovom slucaju 2) - swap (1,1), dakle sada array ostaje [2,1,3] sto je nebitno posto se zavrsava for i ne pozivamo dalje output
- }
- pa swap pa ponovo for i tako unazad dok se rekurzija ne zavrsi i dobijemo sve rezultate
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement