- Алгоритмы
Алгоритм — это компьютерная процедура, которая очень похожа на рецепт (называемый процедурой) и точно сообщает вашему компьютеру, какие шаги нужно предпринять, чтобы решить проблему или достичь цели.
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; }