Skocz do zawartości
azedor

Programik :)

Rekomendowane odpowiedzi

Poniższe zdaaie pochodzi z ksiazki "Algorytmy i strkutury danych" H.Cormena i innych autorów.

 

Mam dany zbiór liczb całkowitych S, oraz liczbę całkowitą X. Program ma sprawdzić czy istnieją w tym zbiorze dwie liczby ktorych suma wynosi X.

Oczywiscie do tego momentu to zdania jest trywialne :), ale chodzi o to żęby ten program (funkcja) działałą w czasie O(n*lg(n)), gdzie n to ilość danych wejsciowych, lg to logarytm o podstawie 2, O - to złożoność obliczeniowa programu (zazwyczaj uzywa się symbolu theta).

Wiem jak rozwiązać to zadanie w przypadku gdy zbiór jest posorotwany, wtedy jestem w stanie napisać funkcje o takiej złożonośći, ale w zdaniu nic nie jest powiedziane, że zbiór jest posorotwany, więc póki co to nie wiem jak to zrobić.

 

Możliwe, że to zadanie będzie opieralo się na rekurencji, z dzieleniem zbioru na połowe, wtedy mielibyśmy dokładnie lg(n) poziomów rekursji, ale może ktoś ma inny pomysł jak to zrobić.

Edytowane przez azedor

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To co za problem posortuj sobie ten zbiór. Zajmie Ci to O(nlgn) potem użyj swojego algorytmu na posortowanym zbiorze też zajmie to O(nlgn) co łącznie da: O(nlgn) i po sprawie :-P .

złozoność O(2nlgn) to to samo co O(nlgn) ? :) jeśli tak to to można zrobić tak jak powidziałeś :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

złozoność O(2nlgn) to to samo co O(nlgn) ? :) jeśli tak to to można zrobić tak jak powidziałeś :)

To to samo :D, nawet O(100*nlgn) to też O(nlgn), wkońcu 100 to tylko stała. Warto najpierw poznać te miary złożoności (jeszcze omega i teta są często wykorzystywane), bo to się często przydaje.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...