- Алгоритмы
Алгоритм — это компьютерная процедура, которая очень похожа на рецепт (называемый процедурой) и точно сообщает вашему компьютеру, какие шаги нужно предпринять, чтобы решить проблему или достичь цели.
2. Большое О
Мы используем это обозначение для сравнения эффективности различных подходов к проблеме. Обозначение Big O записывается в виде O(n), где O означает «порядок величины». Он описывает время выполнения задачи по отношению к количеству шагов, необходимых для ее выполнения, в зависимости от размера ввода.

Постоянная сложность: O(1)
Время выполнения постоянной задачи не изменится независимо от входного значения.
Линейная сложность: O(n)
время выполнения увеличивается на порядок, пропорциональный n.
Квадратичная сложность: O(N²)
общее время выполнения увеличивается на порядок величина пропорциональна N².
Логарифмическая сложность: O(log n)
Этот тип алгоритма делает вычисления молниеносно быстрыми. Вместо увеличения времени, необходимого для выполнения каждого последующего шага, время уменьшается на величину, обратно пропорциональную N.
4. Факториал
//iterative factorial
function factorial(n){
let result = 1;
for(let i=n; i>1; i--) result *=i;
return result;
}
const factorial = factorial(5);
console.log(factorial);
//recursive way to find factorial
function factorialRecursive(n){
if(n==2) return n;
return n * factorialRecursive(n-1);
}
const factorialRecursive= factorialRecursive(5);
console.log(factorialRecursive)
5. Последовательность Фибоначчи
function fibonacci(terms){
let fiboSeq = []; for(let i=0; i<terms; i++){
i===0 || i===1 ? fiboSeq.push(i) : fiboSeq.push(fiboSeq[i-1] + fiboSeq[i-2]);
} return fiboSeq;
}
console.log(fibonacci(9))
//using recursion
function fibonacci(num) {
if (num <= 1) return 1;
return fibonacci(num-2 ) + fibonacci(num - 1);
}
let n = 9 //this value will be inputed
for(let i=0; i<n; i++)
{
console.log(fibonacci(i))
}
6. Линейный поиск
let arr = [5,1,4,2,8];
function linerSearch(value){
for(let i=0; i < arr.length; i++){
if(arr[i] === value) return "Found at index: "+i;
}
return "Not found";
}
console.log(linerSearch(66))
console.log(linerSearch(8)
7. Пузырьковая сортировка
Он сравнивает каждую пару соседних элементов и меняет их местами, если они находятся в неправильном порядке.

function bubbleSort(arr){
for(let i=0; i < arr.length; i++){
for(let j=i+1; j<arr.length; j++){
if(arr[i] > arr[j]){
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(bubbleSort([5,1,4,2,8]));
8. Сортировка выбором
Алгоритм сортировки выбором сортирует массив, многократно находя минимальный элемент (с учетом возрастания) из несортированной части и помещая его в начало.

let selectionSort = (arr) => {
let len = arr.length;
for (let i = 0; i < len; i++) {
let min = i;
for (let j = i + 1; j < len; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min !== i) {
let tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
return arr;
}
9. Сортировка вставками
Сортировка вставками – это простой алгоритм сортировки, который создает окончательный отсортированный массив (или список) по одному элементу за раз.

function insertionSort(arr){
for(let i=1; i < arr.length; i++){ let temp = arr[i] let j = i-1;
for(; j >= 0; j--){ if(arr[j] > temp) arr[j+1] = arr[j];
else break;
}
j++;
arr[j] = temp;
}
return arr;
}