A
A
Alex Glebov2019-01-21 14:06:32
JavaScript
Alex Glebov, 2019-01-21 14:06:32

Quicksort in js, what's wrong?

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] почему так((

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Rsa97, 2019-01-21
@SkiperX

So instead of an element, you add its index to the arrays.
Also, there is a mistake in logic. All elements smaller than the reference one into one array, larger ones into the second one. Where are the elements equal to the base?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question