Datastructuren en algoritmen

Wat is de tijdcomplexiteit van een bewerking die in een array van n elementen elk paar van twee verschillende elementen precies één keer vergelijkt (een dubbele lus die element i vergelijkt met alle elementen erna en i telkens één stap verder zet)?

  1. AO(n)
  2. BO(n log n)
  3. CO(n²)
Antwoord en toelichting tonen

Antwoord: C. O(n²)

Het aantal vergeleken paren is (n−1) + (n−2) + … + 1 = n(n−1)/2: 45 voor n = 10 en 499.500 voor n = 1000. De O-notatie kijkt alleen naar hoe het aantal groeit als n groot wordt, dus de factor 1/2 en de termen van lagere orde vallen weg en het resultaat is O(n²). Als n verdubbelt, wordt het aantal ongeveer vier keer zo groot. O(n) is de complexiteit van een bewerking die elk element één keer bekijkt, en O(n log n) die van algoritmen zoals mergesort, die de gegevens herhaaldelijk in tweeën delen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Datastructuren en algoritmen

  1. Een programma met tijdcomplexiteit O(n²) doet er 0,5 seconde over bij 1000 gegevens. Hoeveel seconden duurt het ongeveer bij 4000 gegevens?
  2. Lineair zoeken vergelijkt de elementen van een array met 100 verschillende waarden één voor één vanaf het begin om een gezochte waarde te vinden. De gezochte waarde staat altijd in de array en heeft op elke positie dezelfde kans. Wat is het gemiddelde aantal vergelijkingen?
  3. Welke beschrijving van een gelinkte lijst (een lijst waarin elk element een pointer naar het volgende element bevat) is juist in vergelijking met een array?
  4. Op een lege stack worden achtereenvolgens push 1, push 2, pop, push 3, push 4, pop, pop uitgevoerd. In welke volgorde komen de waarden die pop verwijdert eruit?
  5. In een lege wachtrij worden de elementen A, B en C in deze volgorde geplaatst. Daarna wordt er één element uitgehaald, wordt D toegevoegd en weer één uitgehaald, en wordt E toegevoegd en nog één uitgehaald. In welke volgorde worden de elementen uitgehaald?