Код - срань.
function swap(a, i, j) {
var s = a[i];
a[i] = a[j];
a[j] = s;
}
function NextSet(a, n) {
var j = n - 2;
while (j != -1 && a[j] >= a[j + 1]) {
j--;
}
if (j == -1) {
return false;
}
var k = n - 1;
while (a[j] >= a[k]) {
k--;
}
swap(a, j, k);
var l = j + 1,
r = n - 1;
// сортируем оставшуюся часть последовательности
while (l < r) {
swap(a, l++, r--);
}
return true;
}
// вывод перестановки
function Print() {
var num = 1; // номер перестановки
return function (a, n) {
var message = num++ + ': ';
for (var i = 0; i < n; i++) {
message += a[i] + ' ';
}
console.log(message);
};
}
var n = prompt('N = '),
a = [];
for (var i = 0; i < n; i++) {
a[i] = i + 1;
}
var log = Print();
log(a, n);
while (NextSet(a, n)) {
log(a, n);
}
Результат смотрите в консоли.