Ответ
- Сортировки: быстрая (QuickSort), слиянием (MergeSort), пузырьковая (BubbleSort).
// QuickSort
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[0];
const left = [], right = [];
for (let i = 1; i < arr.length; i++) {
arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
- Поиск: бинарный (только для отсортированных массивов).
function binarySearch(arr, target) {
let left = 0, right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
arr[mid] < target ? left = mid + 1 : right = mid - 1;
}
return -1;
}
-
Обход графов: BFS (по уровням), DFS (в глубину).
-
Динамическое программирование: например, числа Фибоначчи с мемоизацией.
Также знаю жадные алгоритмы (например, задача о рюкзаке) и алгоритмы работы с деревьями (обходы, балансировка).