Dlaczego lepiej posortować tablicę, a następnie skorzystać z wyszukiwania binarnego? Czy nie możemy po prostu bezpośrednio zastosować naiwnego rozwiązania?
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli po prostu potrzebujesz poszukać elementu raz lub dwa razy, a tablica nie jest jeszcze posortowana, nie ma sensu sortować go i wyszukiwać binarnie.
Sortowanie, a następnie wyszukiwanie binarne to więcejwydajne, jeśli trzeba wielokrotnie przeszukiwać tę samą tablicę. Sortowanie go raz, a następnie użycie binarnego wyszukiwania powoduje wykonanie dodatkowej pracy na początku, aby przyspieszyć kolejne wyszukiwania. (Ustalenie punktu przerwania pozostawia się jako ćwiczenie dla czytelnika)
0 dla odpowiedzi nr 2
Zgaduję, że problemem jest znalezienie elementu w tablicy. Naiwne rozwiązanie, iterujące po tablicy, ma złożoność O (n).
Sortowanie tablicy jest operacją O (nlog (n)), więc nawet bez wyszukiwania binarnego byłoby (teoretycznie) wolniejsze niż tylko iteracja tablicy.
0 dla odpowiedzi № 3
Why it is better to sort an array and then use the binary search?
Twoje stwierdzenie nie zawsze jest prawdziwe.
To jest lepiej, jeśli musisz szukać przedmiotów w bardzo dużej tablicy lub po prostu bardzo często. Lub obie.
Jeśli potrzebujesz uzyskać dostęp do elementu w tablicy o rozmiarze 5 tylko kilka razy, po prostu iteruj go bez żadnych obaw.
Sortowanie JEST duże zadanie. Jeśli potrafisz zdefiniować, ile czasu to zajmie i zmierzysz czas obliczeniowy, który zaoszczędzisz, sortując wcześniej, to otrzymasz odpowiedź. Zwykle nie dbam zbytnio o dokładny czas, po prostu wiem, czy ta tablica zostanie użyta 3 razy, czy 300 razy i przez większość czasu odpowiedź nie musi być obliczona.
Następnie iteracja w porównaniu z wyszukiwaniem binarnym to dosłownie połowa czasu obliczeniowego.