pamparampa Opublikowano 14 Kwietnia 2013 Udostępnij Opublikowano 14 Kwietnia 2013 Witam. Potrzebuję napisać usprawnienie do algorytmu merge sort, który polega na wykrywaniu podciągów rosnących. Mam już sam algorytm sortowania, teraz zastanawiam się jak się zabrać za to usprawnienie. Mógłby ktoś opisać krok po kroku jak taki algorytm wykonać? Samo wykrywanie mniej więcej wiem jak zrobić, ale zastanawiam się głównie nad następującymi rzeczami: - Kiedy mamy szukać podciągów rosnących? Tylko na samym początku, czy np. w każdym poziomie rekurencji? - Czy lepiej szukać podciągów o jakiejkolwiek długości, czy o długości większej niż jakaś stała? - Co dokładnie zrobić, kiedy już znajdę taki ciąg? Proszę o pomoc. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Floodnik Opublikowano 14 Kwietnia 2013 Udostępnij Opublikowano 14 Kwietnia 2013 Masz je policzyć czy wypisać? Czy może znaleźć najdłuższy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 14 Kwietnia 2013 Autor Udostępnij Opublikowano 14 Kwietnia 2013 mam znaleźć ciągi rosnące (nie wiem czy wszystkie, czy tylko te dłuższe) i wykorzystać to, że one są już uporządkowane, do tego, żeby algorytm merge sort szybciej działał Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Floodnik Opublikowano 14 Kwietnia 2013 Udostępnij Opublikowano 14 Kwietnia 2013 No to napotykamy problem: "co autor miał na myśli" :) Pierwsze, co mi przychodzi do głowy, to przed wywołaniem rekurencyjnym sprawdzić, czy dany podciąg(lewa, prawa połówka) jest już posortowany, zwyczajnie przebiegając przez niego. Jeśli tak, nie robić wywołania. Czy to rozwiązuje nasze zadanie? Nie wiem. JAKIEŚ usprawnienie to jest - w przypadku niektórych ciągów(np. dla już posortowanego ciągu zrobisz tylko jedną pętlę, wyjdzie liniowy czas, normalny mergesort by standardowo jechał wszystkie wywołania). Więc teoretycznie zadanie zostało wykonane. Choć nie znajdujemy wszystkich podciągów rosnących... To by było imo bez sensu, mogłoby nawet zwiększyć złożoność. PS. Pisząc poprzedni post nie zwróciłem uwagi na to, że to miało być usprawnienie MergeSorta, a nie dodatkowa funkcjonalność(dlatego łapałem się za głowę o co chodzi). Przepraszam :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się