R1LxrmWTCsp9b
Zdjęcie przedstawia stertę kolorowych klocków lego.

I_R_W14_M26_C++ Sortowanie przez scalanie

Źródło: Xavi Cabrera, domena publiczna.

Sortowanie danych jest jednym z podstawowych problemów informatyki, często spotykanym w praktycznych zastosowaniach, takich jak przetwarzanie danych, wyszukiwanie informacji czy analiza statystyczna. Istnieje wiele algorytmów sortowania, które różnią się sposobem działania oraz efektywnością. Jednym z najbardziej klasycznych i jednocześnie wydajnych algorytmów jest sortowanie przez scalanie.

Algorytm sortowania przez scalanie opiera się na metodzie „dziel i zwyciężaj”. Polega ona na podziale dużego problemu na mniejsze, łatwiejsze do rozwiązania podproblemy. W przypadku sortowania przez scalanie tablica danych jest dzielona na coraz mniejsze fragmenty, aż do momentu, gdy każdy z nich zawiera tylko jeden element, który z definicji jest już posortowany.

Sortowanie przez scalanie stanowi doskonały przykład zastosowania metody „dziel i zwyciężaj” oraz pokazuje, jak odpowiednie rozbicie problemu i połączenie wyników prowadzi do skutecznego rozwiązania złożonych zadań algorytmicznych.

Znasz już metodę sortowania bąbelkowego. Zanim przejdziesz do zapoznania się z materiałem wykonaj poniższe zadanie.

Ćwiczenie na rozgrzewkę

RAQ4PATKFOXXM
Ćwiczenie 1
Uporządkuj podane linie pseudokodu we właściwej kolejności tak, aby powstał usprawniony algorytm sortowania bąbelkowego.

Funkcja zamiana() zamienia ze sobą miejscami elementy tablic o podanych indeksach.
Twoje cele
  • Omówisz algorytm sortowania przez scalanie.

  • Określisz złożoność czasową i pamięciową algorytmu merge sort.

  • Zaimplementujesz algorytm merge sort. w języku C++.

  • Zastosujesz algorytm merge sort. do posortowania przykładowej tablicy.