Пытаюсь реализовать быструю сортировку ( в учебных целях ), при выборе элемента массива в качестве опорного, все работает отлично , но при выборе среднего, сортировка работает некорректно ( вместо вывода 1,3,4,5,7 выводит 3,3,4,7,7 ), в чем может быть проблема?
function quickSort (array) {
if (array.length - 1 < 1) {
return array;
}
else {
let pivot = array[Math.floor((array.length - 1) / 2)];
let less = [],
greater = [];
for (let i = 1; i < array.length; i++) {
if (array[i] <= pivot) {
less.push(array[i]);
}
else {
greater.push(array[i]);
}
}
let result = []
return result.concat (quickSort(less), pivot, quickSort(greater));
}
}
alert(quickSort([5,1,7,4,3]));