Witam. Temat zakladam dla kolegi, poniewaz jest odciety od neta... wiec mam tablice stringow, pobieram od uzytkownika string i musze odnalezc ktory element tablicy odpowiada temu pobranemu - ma to byc jak najszybsze i w 100% niezawodne... Tak czy siak sugestie mile widziane, pozdrawiam :)
Iterujesz po całej tablicy i jeżeli znajdziesz odpowiednią wartość (Tablica[Iter] = WartoscPodanaPrzezUsera) to przerywasz pętle.
Co w tym takiego trudnego ?
PS: Chyba, że ma być podobny do tego, wtedy co innego...
posortuj listę stringów - wtedy będziesz miał najszybsze wyszukiwanie
a jak chcesz bardziej zaawansowanie to zamień tablicę na drzewo (np. trie czy skompresowane trie)
Nie wiem czy sortowanie będzie najszybsze. Chyba to najprostsze rozwiązanie w pętli będzie naprostsze i chyba najszybsze, tzn. można szybciej zacząć od litery od której zaczyna się string i tak po kolei, ale to już dłuższe rozwiązanie, ale jak to ma być do kilkudziesięciu-set stringów i ma to byc proste to zwykła pętla starczy.
na pewno najszybsze dla np. 1000 elementów przypadek pesymistyczny to 1000 'obrotów' pętli a przy posortowanej tablicy 'aż' 10, dla 1000000 pętlą będzie 1000000 a posortowana 20 - widzisz różnicę???
Tak samo, żeby stwierdzić że ciągu nie ma w tablicy musisz przelecieć ją całą a przy posortowanej dla 1000 elementów to 10 porównań a dla 1000000 do 20.
Chcesz dalej polemizować?
I żeby nie było - jakoś wątpię, że będzie tą tablicę za każdym razem pobierał od usera. Będzie ona najprawdopodobniej gdzieś zapisana więc odpada konieczność sortowania jej za każdym razem
Kolega dziekuje Wam za odpowiedzi, jak mowi "wygralo przeszukiwanie binarne posortowanej tablicy". Pozdro ;)
podstawowym rozwiązaniem podczas wyszukiwania wyrazów jest stosowanie funkcji hash'ującej.