user menu
avatar
Zdjęcie główne artykułu.

Algorytmy sortowania - co trzeba umieć

Sortowanie to jedna z najważniejszych rzeczy w programowaniu. Sprawdź aplikacje albo serwisy, z których korzystasz. Na pewno bez problemu znajdziesz jakąś listę z posortowanymi danymi.

  • Lista rzeczy do zrobienia.
  • Lista zamówień, które złożyłeś w sklepie internetowym.
  • Lista wydatków posortowana od największych do najmniejszych.

Takich przykładów dałoby się znaleźć dziesiątki. Po prostu gdzie nie spojrzysz tam masz dane, które są w jakiś sposób posortowane. Lubimy pracować z posortowanymi danymi. Tak jest łatwiej i wygodniej. Pomyśl co by było gdyby trzeba przejrzeć setki pozycji na liście, które są ułożone w zupełnie losowy sposób.

Jak wykonywane jest sortowanie

Żeby dane dało się posortować potrzebny nam będzie jakiś algorytm, który to sortowanie wykonuje. Taki algorytm możemy sprowadzić do prostego schematu:

nieposortowane dane wejściowe -> algorytm -> posortowane dane wyjściowe.

Czyli bierzemy dane, które są ułożone w przypadkowej kolejności, przetwarzamy je odpowiednim algorytmem i na wyjściu otrzymujemy dane posortowane. I to cała filozofia.

Różne algorytmy sortowania

Są różne algorytmy sortowania:

  • Sortowanie bąbelkowe;
  • Sortowanie przez wstawianie;
  • Sortowanie grzebieniowe;
  • Sortowanie przez zliczanie;
  • Sortowanie przez wybieranie;

To tylko wierzchołek góry lodowej bo takich algorytmów jest sporo. Te algorytmy różnią się od siebie różnymi cechami. Jedne są szybsze a inne wolniejsze. Jedne są prostsze do wdrożenia a inne bardziej złożone. Niektóre z nich mają praktyczne zastosowania a inne są bardziej “akademickie”.

Ile trzeba umieć?

To jest dobre pytanie. W praktyce, w wielu językach programowania mamy pewne struktury danych, które można sortować wykorzystując wbudowane mechanizmy. Oznacza to tyle, że możesz wykorzystać gotowe algorytmy do sortowania takich danych. Dobrze jednak jest wiedzieć z czym wiąże się użycie konkretnego sposobu sortowania. Dzięki temu możesz ocenić złożoność, czas wykonywania oraz precyzję wybranej przez ciebie metody. Dobrym pomysłem jest opanowanie, przynajmniej podstawowych algorytmów sortujących. Chodzi o to, żeby mieć jakąś sensowną orientację w tym temacie. I żeby zdawać sobie sprawę jakie mogą być konsekwencje sortowania danych w nieoptymalny sposób.

Pytania rekrutacyjne

Zamierzasz się ubiegać o pracę jako programista? To przygotuj się m.in z algorytmów sortowania. To jest jeden z ulubionych tematów rekruterów w IT. Istnieje spora szansa na to, że na rozmowie o pracę dostaniesz zadanie polegające na implementacji albo objaśnieniu danego algorytmu sortowania. Niektórzy twierdzą, że jest to bardzo akademickie podejście do tematu bo w praktyce takie algorytmy rzadko pisze się od podstaw. Niemniej jednak takie pytania często się pojawiają więc nie daj się zaskoczyć.

Na podsumowanie

Algorytmy sortowania są bardzo ważne bo dzięki nim możemy pracować z uporządkowanymi danymi. W praktyce takie algorytmy rzadko pisze się od podstaw bo sortowanie to problem realizowany często za pomocą wbudowanych mechanizmów języka, gotowych funkcji, bibliotek programistycznych itp. Jedna jeśli poważnie myślisz o programowaniu to potrzebna ci będzie dobra orientacja w takich algorytmach. Chociażby po to, żeby ocenić złożoność obliczeniową danego algorytmu. No i po to, żeby nie być zaskoczonym podczas ubiegania się o pracę.