Źródło: Arkusze CKE
Które określenie najlepiej opisuje złożoność obliczeniową algorytmu quicksort?
Warianty odpowiedzi
-
A
jest różna w zależności od wyboru elementu rozdzielającego
-
B
jest wyższa niż złożoność sortowania bąbelkowego
-
C
jest zawsze niższa niż złożoność każdego innego algorytmu sortowania
-
D
jest wyższa niż O(n2).
Wyjaśnienie
Szybkość działania QuickSorta zależy bezpośrednio od tego, jak trafnie wybierzemy tak zwany pivot, czyli element podziału.
Jeśli mamy szczęście i pivot dzieli dane na dwie równe części, algorytm działa bardzo szybko, osiągając złożoność O(n log n).
Problem pojawia się, gdy jako pivot stale trafia się najmniejszy lub największy element, na przykład w posortowanej już tablicy. Wtedy algorytm spada do fatalnej złożoności O(n^2), bo wykonuje mnóstwo zbędnych porównań.