Adam
Woźniak
software architect
and developer
Temat: [zagadka] scalenie w czasie O(n) i dodatkowej pamięci O(1)
Tomasz Kaczanowski:
Maciej Hehl:
Ja tego nie mogę pojąć. Ok może ja jestem dziwny i może mój perfekcjonizm jest bez sensu, ale to co tu się dzieje mnie przeraża. Was to nie przeraża?
No troszkę wskżników jest i kilka sztuczek, ale właśnie, aby nie zaciemniać algorytmu użył pewnie makra swap (można sobie na poczekaniu coś takiego napisać).
Obawiam się, że takiego makra SWAP nie da się napisać, bo w kodzie wywołanie wygląda tak:
SWAP(*c,*a);
... czyli do makra trafiają dwa int'y, a celem makra jest zamienienie dwóch elementów w tablicy (czyli powinno wywołanie wyglądać tak: SWAP(c,a)).
Idea jest taka, że dzielisz tablicę na 3 części
1) w którą wstawiasz 2) ta która jest do dołączenia i 3) taki bufor.
Ja np. chciałem zrobić bufor pomiędzy 1) i drugą częścią tablicy, ale w pewnyym momencie robi się rzeźnia, jesli chodzi o czytelność kodu właśnie i za dużo wrunków. Kolega podszedł do problemu w ten sposób, że bufor robi na końcu, w zamian za to odwraca sortowanie (stąd na samym końcu masz odwrócenie tabeli)
Zanim nie zobaczę kodu Karola (lub kogokolwiek innego) z komentarzami, co się w kodzie dzieje i co każda ze zmiennych przechowuje, nie podejmuję się odcyfrowania tego kodu.