====== Sortowanie 2 ====== **Termin zajęć:** 27/28.03.2012 **Do przygotowania** - Na czym polega strategia dziel i zwyciężaj - Zaimplementuj funkcję o następującym nagłówku:void merge(int [] A, int p, int q, int r)Funkcja powinna wykonywać kolejno następujące operacje: * Dzielić tablicę //A// na dwie podtablice (//Left// i //Right//) zawierające odpowiednio elementy //[p ... q]// oraz //[q+1 ... r]// * Przepisywać dane do tablicy A w taki sposób, aby były one posortowane rosnąco, wybierając z tablic //Left// i //Right// odpowiednie elementy (patrz obrazek poniżej) \\ {{:pl:dydaktyka:asd:cwiczenia:mergesort.gif|Merge}} * Jaki warunek musi być spełniony, aby taka metoda poprawnie sortowała dane? - Zaimplementuj funkcję int partition(int [] A, int p, int r)(Funkcja powinna wykonywać kolejno następujące operacje * Przypisz zmiennej //x// ostatni element tablicy //A//. * Następnie sortuje względem tego elementu, tak aby elementy mniejsze od niego znalazły się na początku tablicy, a większe od niego na końcu tablicy. Element //x// ma na samym końcu rozdzielać te dwa zbiory (patrz rysunek poniżej - pokazane są na nim kolejne kroki w jakich następuje wstępne sortowanie zbioru danych). Zwrócony zostaje indeks tego elementu. \\ {{:pl:dydaktyka:asd:cwiczenia:partition.jpg|Partition}}