呕心沥血算法题——数组全排列

// 如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
// 如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。

// 目前想不到任何var比let好的点,可能js底层想要更好的支持let还需要更新吧。
let count = 0;

function allSort(a, start, end) {
   if (start > end) {
      // 做一些想要的操作
      count++;
      console.log(a);
   } else {
      for (let i = start; i <= end; i++) {
         let temp = a[i];
         a[i] = a[start];
         a[start] = temp;
         allSort(a, start + 1, end);
         temp = a[i];
         a[i] = a[start];
         a[start] = temp;
      }
   }
}

let a = ['a', 'b', 'c'];
allSort(a, 0, a.length - 1);
console.log("总数量为:" + count);

 

点赞