AiSD -- mergesort w miejscu, zadanie domowe

Zadanie

Zaimplementuj (w Pascalu/C/C++) algorytm MergeSort używający dodatkowo O(1) pamięci. Np. stosując algorytm podany na ćwiczeniach, lub opisany przez Knuth’a.

Wejście

Pierwszy wiersz standardowego wejścia zawiera liczbę całkowitą n -- rozmiar ciągu do posortowania, 1 < n <= 1000000. W kolejnych n wierszach zapisano liczby do posortowania, każda w osobnym wierszu. Każda z liczb jest z zakresu 0..1000000000.

Wyjście

Na standardowym wyjściu należy zapisać n wierszy -- posortowany ciąg. Każda z liczb powinna być zapisana w osobnym wierszu.

Przykład

Dla danych:

4
3
1000
2
100

prawidłową odpowiedzią jest:

2
3
100
1000

Ocenianie

Rozwiązania będą oceniane na zestawie danych testowych. Rozwiązania niesamodzielne nie będą rozpatrywane. Za W PEŁNI PRAWIDŁOWE rozwiązanie można otrzymać bonus w postaci +20% punktów do 1. kolokwium (prawdopodobnie +4-5 punktów).

Zgłaszanie rozwiązań

Rozwiązania należy nadsyłać pocztą na adres walen@mimuw.edu.pl. Ostateczny termin zgłaszania rozwiązań mija 7.11.2003 o godzinie 12:00. Zgłoszenie powinno zawierać:

  • imię i nazwisko,
  • nr indeksu,
  • kod źródłowy z rozwiązaniem (Pascal/C/C++).
Tomasz Waleń
Tomasz Waleń
Assistant Professor