W przedstawionym fragmencie kodu widać typowy schemat sortowania bąbelkowego (bubble sort). Kluczowy wyróżnik to porównywanie sąsiednich elementów tablicy: warunek w postaci tab[i] > tab[i+1] sprawdza, czy para stojąca obok siebie jest w złej kolejności. Gdy tak jest, elementy są zamieniane miejscami z użyciem zmiennej pomocniczej temp.
Drugi charakterystyczny element to dwie pętle zagnieżdżone: pętla zewnętrzna wykonuje kolejne przebiegi, a pętla wewnętrzna przechodzi przez nieposortowany fragment. Po każdym pełnym przebiegu największa (dla sortowania rosnącego) wartość "wypływa" na koniec rozpatrywanego zakresu, co jest intuicją stojącą za nazwą "bąbelkowe".
Dlaczego pozostałe odpowiedzi nie pasują?
- "przez wstawianie" – w tym algorytmie buduje się posortowaną część, biorąc kolejny element i wstawiając go w odpowiednie miejsce (często z przesuwaniem wielu elementów). Nie ma tu typowego porównania par sąsiednich w pełnym przebiegu ani prostego swapu tylko dla sąsiadów.
- "przez wybór" – cechą jest wyszukanie minimum/maksimum w nieposortowanej części i pojedyncza zamiana z początkiem/końcem zakresu. W kodzie nie ma wyszukiwania skrajnej wartości; jest za to wiele lokalnych porównań sąsiadów.
- "szybkiego" – quicksort bazuje na pivocie, partycjonowaniu i zwykle rekurencji/wywołaniach dzielących problem na podproblemy. W tym fragmencie nie widać ani partycjonowania, ani rekurencji.
Uwaga o błędach składniowych: użycie operatora := byłoby błędem w C++, bo standardowo przypisanie zapisuje się jako =. Jednak nawet przy takim błędzie logika algorytmu (pętle, porównanie sąsiadów, zamiana przez temp) pozostaje jednoznaczna.