Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var swap = function (array, pos1, pos2) {
  2.   var temp = array[pos1];
  3.   array[pos1] = array[pos2];
  4.   array[pos2] = temp;
  5. };
  6.  
  7. var heapsPermute = function (array, n) {
  8.   n = n || array.length; // set n default to array.length
  9.   if (n === 1) {
  10.     return array;
  11.   } else {
  12.     for (var i = 1; i <= n; i += 1) {
  13.       heapsPermute(array, n - 1);
  14.       if (n % 2) {
  15.         var j = 1;
  16.       } else {
  17.         var j = i;
  18.       }
  19.       swap(array, j - 1, n - 1); // -1 to account for javascript zero-indexing
  20.     }
  21.   }
  22. };
  23.  
  24. input = heapsPermute([1,2,3], 3)
  25.  
  26. prvo pokretanje: array - [1,2,3], n - 3
  27. n = 3;
  28. if preskacemo, idemo u else
  29. for (i = 1; i <= 3; i += 1) {
  30.     heapsPermute([1,2,3], 2) -> drugo pokretanje
  31.  
  32.         drugo pokretanje: array - [1,2,3], n - 2
  33.         n = 2
  34.         if preskacemo, idemo u else
  35.         for (i = 1; i <= 2; i += 1) {
  36.             heapsPermute([1,2,3], 1) -> trece pokretanje
  37.  
  38.                 trece pokretanje: array - [1,2,3], n - 1
  39.                 n = 1 -> vracamo array [1,2,3] i nastavljamo dalje //output [1,2,3]
  40.  
  41.             n%2 = 0, dakle j = i (u ovom slucaju 1) - swap (0,1), dakle sada je array [2,1,3]
  42.  
  43.             <-sledeci korak for, i = 2, n = 2, array = [2,1,3]->
  44.  
  45.             heapsPermute([2,1,3],1) -> cetvrto pokretanje
  46.  
  47.                 cetvrto pokretanje: array - [2,1,3], n - 1
  48.                 n = 1  -> vracamo array [2,1,3] i nastavljamo dalje //output [2,1,3]
  49.  
  50.             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
  51.         }
  52.  
  53.         pa swap pa ponovo for i tako unazad dok se rekurzija ne zavrsi i dobijemo sve rezultate
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement