Ia adalah tatatanda yang menentukan kelajuan atau perlahan algoritma berjalan. Kelajuan ini tidak ditentukan oleh saat, tetapi oleh berapa banyak masa berjalan algoritma meningkat apabila elemen meningkat.
Big O ialah hubungan antara masa dan saiz. Sepanjang artikel, anda akan melihat graf dengan langkah ini dan anda akan memahaminya dengan lebih baik dalam amalan. Kami mempunyai dua jenis kerumitan (ruang dan temporal).
Kerumitan Tempoh: Menentukan tempoh masa yang diperlukan untuk melaksanakan algoritma yang berkadar dengan saiz input.
Kerumitan Spatial: Menentukan jumlah memori yang akan diperuntukkan untuk mencari item yang kita perlukan.
contoh:
Tempo Constante O(1):
contoh:
function increment(value: number){ return ++value } function decrement(value: number){ return --value }
const fruits = ["apple", "orange", "grape", "banana"] function getItem(items: string[], index: number) { return items[index] } const item = getItem(fruits, 2) console.log(`fruit: ${item}`) // "grape"
const animes = ["one piece", "dragon ball", "naruto", "demon slayer"] function getFirstElement(items: string[]){ return items[0] }
const animes = ["one piece", "dragon ball", "naruto", "demon slayer"] function getLastElement(items: string[]){ return items[item.length - 1] } let lastElement = getLastElement(animes) console.log(`Last Element: ${lastElement}`)
Masa Linear O(n):
contoh:
const numbers = [0, 4, 8, 2, 37, 11, 7, 48] function getMaxValue(items: number[]) { let max = numbers[0]; for (let i=0; i <= items.length; i++){ if(items[i] > max) { max = items[i] } } return max; } let maxValue = getMaxValue(numbers) console.log(`Max Value: ${maxValue}`)
Masa Logaritma O(log n)
contoh:
const numbers = [0, 9, 24, 78, 54, 88, 92, 100, 21, 90] function binarySearch(nums: number[], target: number) { let left = 0; let right = nums.length - 1; while (left <= right) { let middle = Math.floor((right + left) / 2); if (nums[middle] === target) { return middle; } else if (nums[middle] < target) { left = middle + 1; } else { right = middle - 1; } } return -1; } let getTarget = binarySearch(numbers, 92) console.log(`Target: ${getTarget}`)
log2(10) = 3.4
log2(20) = 4.3
log2(40) = 5.3
Masa linearitma/kuasilinear O(n log n)
function increment(value: number){ return ++value } function decrement(value: number){ return --value }
Masa Kuadratik O(n²)
contoh:
const fruits = ["apple", "orange", "grape", "banana"] function getItem(items: string[], index: number) { return items[index] } const item = getItem(fruits, 2) console.log(`fruit: ${item}`) // "grape"
Eksponen Masa O(2ˆn)
const animes = ["one piece", "dragon ball", "naruto", "demon slayer"] function getFirstElement(items: string[]){ return items[0] }
Masa Faktorial O(n!)
contoh:
const animes = ["one piece", "dragon ball", "naruto", "demon slayer"] function getLastElement(items: string[]){ return items[item.length - 1] } let lastElement = getLastElement(animes) console.log(`Last Element: ${lastElement}`)
Atas ialah kandungan terperinci Notasi O Besar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!