Wpis z mikrobloga

#java #programowanie
Słowem wstępu, jakiś czas temu dobry mirek wrzucił na wykop link z kursem od JetBrains. Zapisałem się i korzystam do dzisiaj codziennie (z wyjątkiem dnia, czy dwóch). No i szło mi bez większych problemów, aż do dzisiaj. W projekcie który mam zrobić (książka telefoniczna) mam zastosować bubble sort i jump search.
Tylko pytanie jest takie jak mam tego użyć skoro dostaje 2 pliki:
directory - numery telefonów wraz z nazwiskami
file - imiona i nazwiska (tych jest 500)
Mam sprawdzić czy w directory znajdują się nazwiska (imiona + nazwiska) z file. O ile plik file mogę posortować alfabetycznie o tyle nie kumam jak mam później wykorzystać jump search. Nawet jeśli posortuję plik directory to dalej nie będę miał jak wykorzystać jump search skoro szukam stringów nie nr. tel.
Ktoś ma może jakieś pomysły?
W spojlerze całe polecenie.

  • 7
@Cilthal: sortujesz file po nazwiskach, a potem używasz tego jump searcha żeby dopasować nazwisko do numery telefonu
spróbuj sprawdzać pierwszy kod znaku w Stringu
robisz jumpy aż nie znajdziesz kodu, który jest n+1(bo możesz mieć nazwisko szukane Bdupa, a jump ci akurat trafi na Banus i już ci nie znajdziesz linear searchem cofając się jakbyś szukał dokładnie po tym znaku) do tego od którego się zaczyna nazwisko, którego szukasz i wtedy
@Killeras: dzięki. Czyli sortuje plik który ma nr tel + imię nazwisko. A później w nim szukam po kolei imię nazwisko z 2 pliku. Bo napisałeś trochę inaczej, albo ja coś nie kumam, bo to był długi dzień.
Z tym, że ten plik do posortowania ma 24 MB, więc wątpię bym się mieścił w limicie czasowym tego podpunktu zadania to jest, muszę przerwać i robić wyszukiwanie "linear".
@Cilthal:

Don't include the sorting time into the searching time, because the list of numbers stays sorted after every search request.

z tego co rozumiem do limitu czasu się nie liczy wstępne sortowanie bombelkowe tej listy nazwisko + imię
@Killeras: liczy się, spójrz na to:
Start searching (bubble sort + jump search)...
Found 500 / 500 entries. Time taken: 22 min. 14 sec. 482 ms.
Sorting time: 20 min. 12 sec. 251 ms. - STOPPED, moved to linear search
Searching time: 2 min. 02 sec. 231 ms.
Edit: Wiesz może jak najlepiej przerywać wykonanie zadania w javie, tak żebym mógł łatwo zwrócić z tego zmienną albo jakoś to dalej ogarnać,
@Killeras: tak bąbelkowe jest generalnie wolne dla dużych zbiorów danych a tam jest tego sporo. Ludzie w komentarzach do tego etapu zadania też piszą, że to długo trwa. Też myślałem o wątkach, konkretów poszukam jutro, jak to ugryźć.
@Killeras: zapomniałem dodać, że po rozwiązaniu etapu mam wzgląd w rozwiązania innych. Znalazłem takie, które wykorzystując scanner a nie stream ładuje plik do tablicy stringów co później okazuje się szybsze no i bubblesort trwa trochę ponad 30 sekund z tego co widzę, chociaż to akurat jutro dokładnie przetestuję zapisując rezultat do pliku. Samo zadanie jest jednak trochę źle skonstruowane bo to oczywiste, że żadna firma nie trzymałaby książki telefonicznej nieposortowanej po