Jaka jest złożoność obliczeniowa w najgorszym przypadku (ang. worst-case) dla klasycznego, nieoptymalizowanego algorytmu sortowania bąbelkowego (Bubble Sort) przetwarzającego tablicę o rozmiarze n elementów?
Jaka jest złożoność obliczeniowa w najgorszym przypadku (ang. worst-case) dla klasycznego, nieoptymalizowanego algorytmu sortowania bąbelkowego (Bubble Sort) przetwarzającego tablicę o rozmiarze n elementów?
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: C (O(n²))
Ponieważ w najgorszym scenariuszu (gdy elementy wejściowe są poukładane w odwrotnej kolejności do pożądanej) nieoptymalizowany algorytm bąbelkowy musi porównać każdy element z każdym innym za pomocą dwóch zagnieżdżonych pętli, co skutkuje wykonaniem operacji proporcjonalnie do kwadratu liczby elementów, czyli O(n^2).
Opcja A reprezentuje optymistyczną złożoność czasową niektórych zoptymalizowanych algorytmów (np. sortowania bąbelkowego z flagą zmiany dla już posortowanej tablicy). Opcja B określa złożoność najwydajniejszych algorytmów sortowania przez porównanie, takich jak Merge Sort czy Heap Sort. Opcja D określa złożoność wykładniczą, charakterystyczną dla skomplikowanych problemów o charakterze kombinatorycznym.
Dlaczego pozostałe opcje są nieprawidłowe?
- A: Opcja
O(n)nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu. - B: Opcja
O(n log n)nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu. - D: Opcja
O(2ⁿ)nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.
Chcesz poćwiczyć całą kwalifikację INF.03?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Złożoność obliczeniowa i Notacja Dużego OMiara efektywności algorytmu opisująca, jak rośnie czas wykonania lub zużycie pamięci wraz ze wzrostem rozmiaru danych wejściowych (n).
- Algorytmy sortowania (bąbelkowe, przez wybieranie, przez wstawianie)Podstawowe algorytmy porządkowania elementów w tablicy rosnąco lub malejąco o typowej złożoności kwadratowej O(n²).
- System kontroli wersji Git (commit, push, pull, branch)Rozproszony system kontroli wersji śledzący historię zmian w plikach projektu i ułatwiający zespołową pracę programistów.
Podobne pytania z działu „Algorytmy i podstawy programowania”
Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 78 pytań z tego działu.
- #36
Co definiuje w języku C++ przedstawiony fragment kodu?
- #37
Sposób programowania, w którym ciąg poleceń (sekwencji instrukcji) przekazywanych komputerowi jest postrzegany jako program, nosi nazwę programowania
- #41
Jak nazywa się program, który wykonuje instrukcje zawarte w kodzie źródłowym tworzonego programu bez uprzedniego generowania programu wynikowego?
- #71
Wskaż słowo kluczowe w języku C++ dodawane przed wbudowanym typem danych, które przesuwa zakres liczby wyłącznie nieujemne
- #72
W językach programowania tylko zmienna jednego typu wbudowanego może przyjmować wyłącznie dwie wartości. Jest to typ