- Ýaýradylan senesi
JavaScript-da Big O
- Awtorlar
- Ady
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Big O Belligi, Assimptotik Belligi
Big O Belligi, umumylykda Bachmann-Landau belligi ýa-da assimptotik belligi diýlip atlandyrylýar, algoritmiň işlemegiň tizligini beýan etmek üçin ulanylýan bir usuldyr. Ol algoritmiň iň ýaramaz ýagdaýyny beýan etmek üçin ulanylýar. Ol dürli algoritmleriň işlemegiň tizligini deňeşdirmek üçin ulanylýar. Ol algoritmiň durmuşa geçirilmegini giriş ölçegine görä beýan edýär.
Big O belligi funksiýalary öz ösüş tizligine görä häsiýetlendirýär: Birnäçe ösüş tizligine eýe bolan işler bir tarapdan bir bölek hasaplanýar. Bu, bir funksiýanyň argument özüne degişli bir gymmata ýa-da çäksizlige tarap ýören wagtynda, funksiýanyň çäklendiriji hereketini beýan edýän matematik bir belgidir. Algoritmleriň işleme wagtynyň ýa-da ýer talaplarynyň giriş ölçeg ösen wagtynda nähili ösýändigini bölmek üçin ulanylýar. "O" harpy ulanylýar, sebäbi funksiýanyň ösüş tizligi onuň tertibi diýlip hem atlandyrylýar.
Yterasiýa
For Döwrü
for (let i = 0; i < n; i++) {
console.log(i)
}
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
While Döwrü
let i = 0
while (i < n) {
console.log(i)
i++
}
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
Do While Döwrü
let i = 0
do {
console.log(i)
i++
} while (i < n)
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
Rekursiýa
Faktorial
function factorial(n) {
if (n === 0) {
return 1
}
return n * factorial(n - 1)
}
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
Fibonaççi
function fibonacci(n) {
if (n <= 1) {
return n
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
Gözleg
Liner Gözleg
function linearSearch(arr, value) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === value) {
return i
}
}
return -1
}
Ýokarda görkezilen kod n gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n) -dir.
Iki Terfli Gözleg
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
}
Ýokarda görkezilen kod log(n) gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(log(n)) -dir.
Sortlamak
Püzürle Sortlamak
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
}
Ýokarda görkezilen kod n^2 gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n^2) -dir.
Saýlap Sortlamak
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
}
Ýokarda görkezilen kod n^2 gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n^2) -dir.
Goşmaça Sortlamak
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
}
Ýokarda görkezilen kod n^2 gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n^2) -dir.
Birleşdirme Sortlamak
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
}
Ýokarda görkezilen kod n log(n) gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n log(n)) -dir.
Tiz Sortlamak
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
}
Ýokarda görkezilen kod n log(n) gezek işlär. Bu kodyň wagtyň çylşyrymlylygy O(n log(n)) -dir.
Big O üçin maslahatlar
- Aritmetik işlemler sabitdir.
- Ýer bölüwi sabitdir.
- Massiwiň (indekse görä) ýa-da obýektiň (açara görä) elementine ýetmek sabitdir.
- Döwrüň içindäki döwrüň uzynlygy döwrüň içinde bolýan zatlaryň çylşyrymlylygynyň köpeltgisidir.