/ / Czy lepiej posortować tablicę, a następnie skorzystać z wyszukiwania binarnego, czy bezpośrednio zastosować naiwne rozwiązanie? - tablice, sortowanie

Czy lepiej jest posortować tablicę, a następnie użyć wyszukiwania binarnego lub bezpośrednio użyć rozwiązania naiwnego? - tablice, sortowanie

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 № 1

Jeś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.