Изучение основ JavaScript с помощью упражнений

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы изучим основы программирования на JavaScript. С помощью серии упражнений и задач мы рассмотрим такие темы, как переменные, типы данных, функции, управляющий поток и многие другие. В конце практического занятия вы приобретете твердый базовый уровень знаний о синтаксисе JavaScript и сможете писать на этом универсальном языке программирования простые программы.

Алгоритм быстрой сортировки

Для практики программирования откройте Терминал/SSH и введите node. Алгоритм сортирует массив чисел с использованием алгоритма быстрой сортировки. Вот шаги, которые необходимо выполнить:

  • Использовать рекурсию.
  • Использовать оператор расширения (...), чтобы скопировать исходный массив arr.
  • Если длина массива меньше 2, вернуть скопированный массив.
  • Использовать Math.floor(), чтобы вычислить индекс опорного элемента.
  • Использовать Array.prototype.reduce() и Array.prototype.push(), чтобы разделить массив на два подмассива. Первый содержит элементы, меньшие или равные pivot, а второй содержит элементы, большие него. Деструктурировать результат на два массива.
  • Рекурсивно вызывать quickSort() для созданных подмассивов.

Вот пример, как реализовать этот алгоритм:

const quickSort = (arr) => {
  const a = [...arr];
  if (a.length < 2) return a;
  const pivotIndex = Math.floor(arr.length / 2);
  const pivot = a[pivotIndex];
  const [lo, hi] = a.reduce(
    (acc, val, i) => {
      if (val < pivot || (val === pivot && i != pivotIndex)) {
        acc[0].push(val);
      } else if (val > pivot) {
        acc[1].push(val);
      }
      return acc;
    },
    [[], []]
  );
  return [...quickSort(lo), pivot, ...quickSort(hi)];
};

Для проверки работы запустите следующую команду:

quickSort([1, 6, 1, 5, 3, 2, 1, 4]); // [1, 1, 1, 2, 3, 4, 5, 6]

Резюме

Поздравляем! Вы завершили практическое занятие по быстрой сортировке. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.