Sobes.tech
Junior

Milline on elementide otsimise keerukus Swiftis massiivis?

sobes.tech AI

Vastus AI-lt

Swiftis on tüüpiline mitterühmitud massiiv (näiteks Array<Element>) elemendi otsimise keerukus on O(n), kus n on massiivi elementide arv. See tuleneb sellest, et halvimatel juhtudel võib olla vaja läbi vaadata kõik massiivi elemendid.

Kuid kui massiiv on sorteeritud, saab kasutada binaarotsingut, mille keerukus on O(log n). Swift pakub meetodit binarySearch sorteeritud kogumitele.

Lineaarse otsingu näide:

let array = [1, 5, 2, 8, 3]
let elementToFind = 8

for element in array {
    if element == elementToFind {
        // Element leitud
        break
    }
}

Sorteeritud massiivis binaarse otsingu näide:

let sortedArray = [1, 2, 3, 5, 8]
let elementToFind = 5

if let index = sortedArray.firstIndex(where: { $0 == elementToFind }) {
    // Element leitud indeksil
}