- Weşand li ser
Big O li JavaScript
- Nivîskar
- Nav
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Notasyona Bachmann-Landau anku Notasyona Asymptotic
Notasyona Bachmann-Landau, ku bi hev re dibêjin notasyona Bachmann-Landau yan jî notasyona asymptotic, awayek ji bo ravekirina karîgeriya algoritmayek e. Ew tê bikaranîn ji bo ravekirina rewşa herî xirab a algoritmayek. Ew tê bikaranîn ji bo berhevdanîna karîgeriya algoritmayên cuda. Ew pêkanîna algoritmayek li gorî mezinahiya inputê rave dike.
Notasyona Big O fonksiyonan li gorî rêjeya wan a mezinbûnê diyar dike: erkên ku heman rêjeya mezinbûnê heye, wekî heman rêzê tên hesibandin. Ev notasyoneke matematîkî ye ku tevgera sînorî ya fonksiyonê diyar dike dema ku arguman ber bi nirxek taybetî yan jî bêdawî ve diçe. Ew tê bikaranîn ji bo dabeşkirina algoritmayan li gorî ka daxwazên dem an jî cîhê wan çawa mezin dibin dema ku mezinahiya inputê mezin dibe. Tîpa O tê bikaranîn ji ber ku rêjeya mezinbûnê ya fonksiyonê wekî rêza wê jî tê binavkirin.
Iterasyon
For Loop
for (let i = 0; i < n; i++) {
console.log(i)
}
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
While Loop
let i = 0
while (i < n) {
console.log(i)
i++
}
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
Do While Loop
let i = 0
do {
console.log(i)
i++
} while (i < n)
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
Recursion
Factorial
function factorial(n) {
if (n === 0) {
return 1
}
return n * factorial(n - 1)
}
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
Fibonacci
function fibonacci(n) {
if (n <= 1) {
return n
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
Lêgerîn
Lêgerîna Xetî
function linearSearch(arr, value) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === value) {
return i
}
}
return -1
}
Kodeya jorîn n caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n) e.
Lêgerîna Binêrî
function binarySearch(arr, value) {
let start = 0
let end = arr.length - 1
let middle = Math.floor((start + end) / 2)
while (arr[middle] !== value && start <= end) {
if (value < arr[middle]) {
end = middle - 1
} else {
start = middle + 1
}
middle = Math.floor((start + end) / 2)
}
if (arr[middle] === value) {
return middle
}
return -1
}
Kodeya jorîn log(n) caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(log(n)) e.
Rêzkirin
Rêzkirina Hûrikê
function bubbleSort(arr) {
for (let i = arr.length; i > 0; i--) {
for (let j = 0; j < i - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
return arr
}
Kodeya jorîn n^2 caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n^2) e.
Rêzkirina Hilbijartinê
function selectionSort(arr) {
for (let i = 0; i < arr.length; i++) {
let lowest = i
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[lowest]) {
lowest = j
}
}
if (i !== lowest) {
let temp = arr[i]
arr[i] = arr[lowest]
arr[lowest] = temp
}
}
return arr
}
Kodeya jorîn n^2 caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n^2) e.
Rêzkirina Derxistinê
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let currentVal = arr[i]
for (var j = i - 1; j >= 0 && arr[j] > currentVal; j--) {
arr[j + 1] = arr[j]
}
arr[j + 1] = currentVal
}
return arr
}
Kodeya jorîn n^2 caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n^2) e.
Rêzkirina Hevgirtinê
function mergeSort(arr) {
if (arr.length <= 1) return arr
let mid = Math.floor(arr.length / 2)
let left = mergeSort(arr.slice(0, mid))
let right = mergeSort(arr.slice(mid))
return merge(left, right)
}
function merge(left, right) {
let results = []
let i = 0
let j = 0
while (i < left.length && j < right.length) {
if (left[i] < right[j]) {
results.push(left[i])
i++
} else {
results.push(right[j])
j++
}
}
while (i < left.length) {
results.push(left[i])
i++
}
while (j < right.length) {
results.push(right[j])
j++
}
return results
}
Kodeya jorîn n log(n) caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n log(n)) e.
Rêzkirina Bilez
function pivot(arr, start = 0, end = arr.length + 1) {
let pivot = arr[start]
let swapIdx = start
function swap(array, i, j) {
let temp = array[i]
array[i] = array[j]
array[j] = temp
}
for (let i = start + 1; i < arr.length; i++) {
if (pivot > arr[i]) {
swapIdx++
swap(arr, swapIdx, i)
}
}
swap(arr, start, swapIdx)
return swapIdx
}
function quickSort(arr, left = 0, right = arr.length - 1) {
if (left < right) {
let pivotIndex = pivot(arr, left, right)
quickSort(arr, left, pivotIndex - 1)
quickSort(arr, pivotIndex + 1, right)
}
return arr
}
Kodeya jorîn n log(n) caran dê were gerandin. Pîvana tevliheviya demê ya vê kodeyê O(n log(n)) e.
Pêşniyarên Ji Bo Big O
- Operasyonên aritmetîkî sabit in
- Têkilîya guherbarê sabit e
- Gihîştina elementên rêze (bi nîşan) an jî tiştan (bi key) sabit e
- Di nav loopê de, tevlihevî dirêjahiya loopê caran tevliheviya tiştê ku di nav loopê de diqewime ye