- Waxaa la daabacay
Big O ee JavaScript
- Qorayaasha
- Magaca
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Calaamadda O Weyn, Qoraalka Bachmann-Landau ama Calaamadda Asymptotic
Calaamadda O Weyn, oo si wada jir ah loogu yeero qoraalka Bachmann-Landau ama calaamadda asymptotic, waa hab lagu sharaxayo waxqabadka algorithm. Waxaa loo isticmaalaa in lagu sharaxo xaaladda ugu xun ee algorithm. Waxaa loo isticmaalaa in lagu barbar dhigo waxqabadka algorithms kala duwan. Waxay sharaxaysaa fulinta algorithm marka loo eego cabbirka gelitaanka.
Calaamadda O Weyn waxay qeexaysaa hawlaha iyadoo loo eegayo heerarka korriinka: hawlaha leh heerka korriinka la mid ah waxaa loo tixgeliyaa inay yihiin isla amar. Waa calaamad xisaabeed oo sharaxaysa dhaqanka xaddidan ee shaqada marka dooddu ay u janjeedho qiime gaar ah ama aan dhammaad lahayn. Waxaa loo isticmaalaa in lagu kala saaro algorithms iyadoo loo eegayo sida waqtigooda fulinta ama shuruudaha booska ay u koraan marka cabbirka gelitaanka uu koro. Xarafka O waxaa loo isticmaalaa sababtoo ah heerka korriinka shaqada sidoo kale loogu yeero amarkeeda.
Wareegga
Wareegga For
for (let i = 0; i < n; i++) {
console.log(i)
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Wareegga While
let i = 0
while (i < n) {
console.log(i)
i++
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Wareegga Do While
let i = 0
do {
console.log(i)
i++
} while (i < n)
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Recursion
Factorial
function factorial(n) {
if (n === 0) {
return 1
}
return n * factorial(n - 1)
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Fibonacci
function fibonacci(n) {
if (n <= 1) {
return n
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Raadista
Raadinta Linear
function linearSearch(arr, value) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === value) {
return i
}
}
return -1
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n).
Raadinta Binary
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa log(n) jeer. Xaqiiqada wakhtiga ee koodhkan waa O(log(n)).
Kala Saaridda
Kala Saaridda Bubble
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n^2 jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n^2).
Kala Saaridda Selection
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n^2 jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n^2).
Kala Saaridda Insertion
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n^2 jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n^2).
Kala Saaridda Merge
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n log(n) jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n log(n)).
Kala Saaridda Quick
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
}
Koodhkan kor ku xusan wuxuu shaqeyn doonaa n log(n) jeer. Xaqiiqada wakhtiga ee koodhkan waa O(n log(n)).
Talooyin Calaamadda O Weyn
- Hawlgallada xisaabeed waa joogto ah
- Assignta isbeddelka waa joogto ah
- Helitaanka xubnaha ku jira array (iyadoo loo marayo index) ama object (iyadoo loo marayo key) waa joogto ah
- Wareegga, xaqiiqada waa dhererka wareegga la dhuftay xaqiiqada wax kasta oo ku dhacda gudaha wareegga