Рубрики
Без рубрики

Алгоритмы сортировки JavaScript: сортировка выбора

Я закончил университет – в аду нет никакого способа, что мне все еще понадобятся структуры данных и алгоритмы, r … Tagged с алгоритмами, JavaScript, Sort.

Я закончил университет – в аду нет никакого способа, мне все еще понадобятся структуры данных и алгоритмы, верно? (Это то, что я подумал, я забыл почти все, чтобы сделать больше места в моем мозгу для футбольных викторинов и глупых мемов:)) Пока я не смутился на одном интервью, и из-за этого я провел довольно много времени на обучение этого, Что принесло мне лучшую работу, чем тот, который у меня был. (Да!) Снова, проверьте мой блог Если хочешь! Это вторая часть в нашей серии алгоритмов JavaScript (Cue the SSSR Music).

После окончания Bubble Sort мы переходим к следующему алгоритму сортировки JavaScript – Sortection Sort.

Сорта выбора в некоторой степени похожа на Bubble Sort, но вместо сначала сортируя более высокие значения, помещая их в правильные положения, мы сначала размещаем меньшие значения в правильные положения. Мы все еще повторяем весь массив (в основном) так же.

Вопрос в том, как? Нам нужно хранить наименьшее значение в какой -то переменной контейнера. Тогда это значение может быть переработано в зависимости от значения других элементов (если какой -то элемент меньше, чем уже самый маленький элемент в массиве).

  1. Храните первый элемент в массиве внутри ‘Наименьшая переменная контейнера’
  2. Алгоритм будет выполнять через массив, сравнивая текущий элемент и текущую наименьшую переменную на каждой итерации
  3. Алгоритм обновит значение наименьшей переменной, если текущий элемент меньше, чем наименьшая переменная контейнера
  4. Если не алгоритм просто продолжается, пока не достигнет конца массива
  5. Алгоритм затем обменяется текущим элементом и наименьшей переменной
  6. Алгоритм повторяет процесс, переходящий от шага 1. до 5.

Давайте визуализируем этот алгоритм, используя входы [11, 17, 5, 28, 3, 6, 15] . Визуализация была сделана с использованием этого удивительного бесплатного инструмента под названием Visualgo Анкет

Первоначально наименьшее значение присваивается первое значение в массиве (красный элемент). Затем алгоритм итерация проходит через элементы и сравнивает наименьшее значение и текущий элемент (зеленый), и если он находит меньшее значение, он перестраивает это значение. В конце каждой итерации алгоритм заменяет текущий самый маленький элемент с первым элементом в итерации, и, следовательно, самый маленький элемент сортируется в соответствующем месте (изменение цвета на оранжевый).

function selectionSort(arr) {
  for (let i = 0; i < arr.length; i++) {
    let smallest = i;
    let j = i + 1;
    for (; j < arr.length; j++) {
      if (arr[j] < arr[smallest]) {
        smallest = j;
      }
    }
    if (i !== smallest) {
      [arr[smallest], arr[i]] = [arr[i], arr[smallest]];
    }
  }
  return arr;
}

selectionSort([11, 17, 5, 28, 3, 6, 15]);

В начале каждой внешней итерации мы установили наименьшее значение для первого значения в массиве. В том же блоке (потому что мы используем объявление ES6 Let), мы объявляем значение J как i + 1. Тогда мы просто проходим каждый элемент в массиве. Если мы найдем меньшее значение, чем самое маленькое наименьшее значение, то мы пересмотрим наименьший индекс, чтобы быть J. В конце каждой итерации мы просто обмениваемся значениями, если есть меньшее значение, и оно не равно значению, которое мы начали с использования – [arr [j], arr [j + 1]] = [arr [j + 1], arr [j]] – Спасибо ES6.

Подобно пузырьковой сортировке, средний Big O выбора сортировки – O (N2), потому что (опять же) мы сравниваем каждый элемент с любым другим элементом в массиве. Если количество элементов будет расти, время выполнения будет расти в геометрической прогрессии. Сорта выбора может быть более полезной, чем сортировка пузырьков, когда мы хотим использовать алгоритм, который уменьшает обмена, потому что алгоритм меняет только один раз – в конце каждого цикла.

Вот и все! Следующим, о котором мы поговорим, является вставка, поэтому, пожалуйста, следите за обновлениями и счастливым кодированием:).

Оригинал: “https://dev.to/bracikaa/javascript-sorting-algorithm-selection-sort-178j”