Datastructuren en algoritmen

De array 29, 10, 14, 37, 13 wordt met selection sort oplopend gesorteerd: het minimum van het ongesorteerde deel wordt gezocht en verwisseld met het eerste element van het ongesorteerde deel. Hoe ziet de array eruit nadat deze stap twee keer is uitgevoerd?

  1. A10, 13, 14, 37, 29
  2. B10, 14, 29, 37, 13
  3. C10, 14, 13, 29, 37
Antwoord en toelichting tonen

Antwoord: A. 10, 13, 14, 37, 29

De eerste stap verwisselt het totale minimum 10 met 29 vooraan, wat 10, 29, 14, 37, 13 geeft. De tweede stap verwisselt 13, het minimum vanaf het tweede element, met 29 op de tweede positie, wat 10, 13, 14, 37, 29 geeft. Selection sort doet altijd n(n−1)/2 vergelijkingen, maar hoogstens één verwisseling per stap, wat een voordeel kan zijn als schrijven duur is. 10, 14, 29, 37, 13 is de array nadat insertion sort twee elementen heeft ingevoegd, en 10, 14, 13, 29, 37 de array na twee doorgangen van bubblesort.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Datastructuren en algoritmen

  1. Een array van 10 elementen wordt met insertion sort oplopend gesorteerd. Elk element vanaf het tweede wordt eruit gehaald en vergeleken met de elementen links ervan, te beginnen bij de linkerbuur, tot een element kleiner dan of gelijk aan de waarde is gevonden of het begin is bereikt. Hoeveel vergelijkingen zijn er nodig als de array al oplopend staat, en als hij aflopend staat?
  2. Welk sorteeralgoritme heeft ook in het slechtste geval tijdcomplexiteit O(n log n) en sorteert met nauwelijks extra geheugen, zoals een werkarray?
  3. De records (naam, score) (A, 80), (B, 70), (C, 80), (D, 70) staan in deze volgorde. In welke volgorde staan de namen als ze met een stabiel sorteeralgoritme oplopend op score worden gesorteerd?
  4. In welk typisch geval heeft quicksort tijdcomplexiteit O(n²)?
  5. Bij mergesort worden de twee gesorteerde reeksen 1, 4, 7, 9 en 2, 3, 8, 10 samengevoegd (merge) tot één reeks door herhaaldelijk de voorste elementen te vergelijken en het kleinste uit te voeren. Is één reeks leeg, dan wordt de rest van de andere zonder vergelijking uitgevoerd. Hoeveel vergelijkingen zijn er nodig?