Selection Sort (sortowanie przez wybór) działa iteracyjnie: w każdej iteracji wybiera element skrajny (najmniejszy lub największy) z nieposortowanej części i umieszcza go na właściwej pozycji poprzez zamianę. Kluczowe jest to, że w danym przebiegu trzeba porównać kolejne elementy, aby znaleźć minimum/maksimum.
Dla ciągu 4 liczb algorytm wykona n-1 = 3 przebiegi:
- W 1. przebiegu przeszukuje 4 elementy, więc aby znaleźć element skrajny, musi wykonać 3 porównania (porównujemy kandydatów na min/max wśród 4 wartości).
- W 2. przebiegu pozostają 3 elementy nieposortowane, więc potrzeba 2 porównań.
- W 3. przebiegu pozostają 2 elementy, więc potrzeba 1 porównania.
Suma porównań wynosi więc 3 + 2 + 1 = 6. To jest też wartość wynikająca z ogólnego wzoru: n(n-1)/2, czyli dla n=4: 4·3/2 = 6.
Dlaczego pozostałe propozycje są błędne?
- "4 porównania" zaniża wynik, bo w pierwszym przebiegu już trzeba wykonać 3 porównania, a do tego dochodzą kolejne przebiegi.
- "8 porównań" zawyża wynik; w Selection Sort liczba porównań dla n=4 jest stała i wynika z 3+2+1, nie ma tu dodatkowych porównań zależnych od ułożenia danych.
- "10 porównań" odpowiadałoby innemu n (np. 5 elementów daje 5·4/2 = 10) albo błędnemu założeniu o większej liczbie przebiegów.
Wskazówka egzaminacyjna: jeśli pytanie dotyczy Selection Sort, najczęściej wystarczy policzyć sumę (n-1) + (n-2) + ... + 1. Kierunek sortowania (rosnąco/malejąco) zmienia znak porównania, ale nie zmienia liczby porównań.