KWALIFIKACJA INF3 - CZERWIEC 2022

PYTANIE NR 1.
Algorytm sortowania tablicy polegający na n-krotnym porównywaniu ze sobą dwóch sąsiadujących elementów tablicy i zamianie miejscami w przypadku spełnienia warunku jest nazywany sortowaniem
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Opis wskazuje na algorytm, w którym wielokrotnie porównuje się sąsiadujące elementy tablicy i zamienia je miejscami, gdy są w niewłaściwej kolejności. Taki mechanizm powoduje "wypływanie" największych (lub najmniejszych) wartości na koniec po kolejnych przebiegach, co jest cechą sortowania bąbelkowego.

Pełne wyjaśnienie:

W pytaniu opisano sortowanie polegające na wielokrotnym wykonywaniu przebiegów po tablicy, podczas których porównuje się dwa sąsiadujące elementy (np. a[i] i a[i+1]) i w razie potrzeby zamienia miejscami. To klasyczna definicja sortowania bąbelkowego (bubble sort).

Dlaczego "bąbelkowe" jest poprawne?
Po jednym pełnym przebiegu największy element (dla sortowania rosnącego) "przesuwa się" na koniec tablicy, ponieważ jest wielokrotnie porównywany z następnym sąsiadem i w razie potrzeby przesuwany w prawo. Po kolejnym przebiegu na swoje miejsce trafia następny największy element itd. Ten efekt stopniowego "wypływania" wartości jest charakterystyczny i odróżnia bubble sort od innych metod.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • Sortowanie przez wybór – w każdym kroku wybiera się element minimalny/maksymalny z nieuporządkowanej części i umieszcza na właściwej pozycji. Kluczowe jest wyszukiwanie ekstremum w całym fragmencie, a nie porównywanie wyłącznie sąsiadów.
  • Sortowanie szybkie – opiera się na podziale względem elementu rozdzielającego (pivot) i rekurencyjnym sortowaniu podtablic. Nie jest definiowane jako n-krotne porównywanie sąsiadów w kolejnych przebiegach.
  • Sortowanie przez scalanie – dzieli dane na części, sortuje je (rekurencyjnie) i następnie scala w jeden uporządkowany ciąg. Sednem jest etap scalania dwóch uporządkowanych sekwencji, a nie lokalne zamiany sąsiadów.

Wskazówka egzaminacyjna: jeśli w opisie pojawia się "porównywanie sąsiadów + zamiana miejscami + kolejne przebiegi", to niemal zawsze chodzi o sortowanie bąbelkowe. Gdy jest "szukanie minimum/maksimum" – to zwykle wybór; gdy "pivot/podział" – szybkie; gdy "dziel i scalaj/merge" – scalanie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Sortowanie bąbelkowe to algorytm, w którym wykonuje się kolejne przebiegi po tablicy, porównując sąsiadujące elementy i zamieniając je miejscami, gdy są w złej kolejności. Po każdym przebiegu element skrajny (np. największy) trafia na koniec, co stopniowo porządkuje całą tablicę.
Porównywanie sąsiadów umożliwia lokalne poprawianie kolejności przez proste operacje zamiany. Dzięki temu elementy "przemieszczają się" o jedno miejsce na przebieg, aż dotrą do poprawnej pozycji. To właśnie odróżnia bubble sort od metod, które wybierają minimum lub dzielą dane na części.
Szukaj sformułowań typu: "wielokrotne przejścia po tablicy", "porównywanie dwóch sąsiadujących elementów", "zamiana miejscami, gdy warunek spełniony". Taki opis pasuje do bubble sort. Jeśli pojawia się pivot, podział lub scalanie, to prawdopodobnie inny algorytm.
W bąbelkowym porządkujesz dane przez serie lokalnych zamian sąsiadów. W sortowaniu przez wybór w każdej iteracji wyszukujesz element minimalny/maksymalny w nieuporządkowanej części i ustawiasz go na właściwe miejsce. Mechanizm pracy jest więc inny: "zamiany sąsiadów" vs "wybór ekstremum".
Sortowanie bąbelkowe działa iteracyjnie i lokalnie (zamiany sąsiadów w kolejnych przebiegach). Sortowanie szybkie (quicksort) bazuje na podziale tablicy względem elementu rozdzielającego (pivot) i rekurencyjnym sortowaniu fragmentów. Quicksort zwykle jest znacznie wydajniejszy dla większych danych.
Bubble sort poprawia kolejność przez zamiany sąsiadów, a merge sort dzieli dane na mniejsze części i następnie scala dwie uporządkowane listy w jedną. W merge sort kluczowy jest etap "scalania", a nie lokalne swap’y. To wpływa też na typową wydajność obu rozwiązań.
Rzadko do dużych danych, bo zwykle jest wolniejsze od bardziej zaawansowanych metod. W praktyce spotyka się je głównie w nauce algorytmów, w prostych przykładach i wizualizacjach, albo przy bardzo małych zbiorach, gdzie prostota implementacji ma większe znaczenie niż wydajność.
Najczęstsze pomyłki to ignorowanie słowa "sąsiadujące" i wybór algorytmu "na oko" (np. quicksort, bo brzmi znajomo). Uczniowie mylą też "zamianę elementów" z "wyborem minimum" lub "scalaniem". Warto kojarzyć każdy algorytm z jego charakterystycznym mechanizmem.
W najprostszym wariancie zakłada się wiele przebiegów aż do pełnego uporządkowania, często maksymalnie n−1. W praktycznych implementacjach dodaje się warunek zakończenia: jeśli w danym przebiegu nie było żadnej zamiany, tablica jest już posortowana i można przerwać działanie.
Ucz się rozpoznawania algorytmów po opisie: sąsiedzi i zamiany (bąbelkowe), wybór minimum/maksimum (przez wybór), pivot i podział (szybkie), dzielenie i scalanie (przez scalanie). Dobrze działa też napisanie krótkich implementacji i prześledzenie kroków na małej tablicy.
info

Około 64% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "Opis wskazuje na algorytm, w którym wielokrotnie porównuje się sąsiadujące elementy tablicy i zamienia je miejscami, gdy są w niewłaściwej kolejności."

Źródła:

  • Wikipedia (pl): "Sortowanie bąbelkowe" – https://pl.wikipedia.org/wiki/Sortowanie_b%C4%85belkowe (dostęp: 2026-02-18)
  • Wikipedia (pl): "Sortowanie przez wybór" – https://pl.wikipedia.org/wiki/Sortowanie_przez_wyb%C3%B3r (dostęp: 2026-02-18)
  • Wikipedia (pl): "Sortowanie szybkie" – https://pl.wikipedia.org/wiki/Sortowanie_szybkie (dostęp: 2026-02-18)

Materiały:

  • Materiały szkolne z algorytmiki (dział: sortowania porównawcze)
  • Dokumentacja/opracowania dotyczące algorytmów sortowania (opisy kroków i pseudokod)
  • Ćwiczenia praktyczne: implementacja sortowań w wybranym języku (np. JavaScript/Python) i porównanie działania na danych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego