function sorter(arr) {
if (arr.length <= 1) {
return arr // если массив пустой или из 1 элемента, то он не нуждается в сортировке
}
/*
из массива выделяем опорный элемент
оставшиеся элементы делим на 2 новых массива:
элементы меньшие опорного, элементы большие опорного
*/
var supporting = arr[0]; // опорный элемент
var smaller = []; // массив элементов меньше опорного
var big = []; // массив элементов больше опорного
arr.forEach(function(item, i, arr) {
if (item < supporting) {
smaller.push(i)
}
if (item > supporting) {
big.push(i)
}
});
/*
возвращаем массив меньших элементов + опорный + массив больших
отправляем массивы сортироваться через рекурсию*/
return sorter(smaller).concat(supporting, sorter(big))
}
sorter([3, 2, 1]) // [1, 1, 3] почему так((