/ / BinarySearch dla odległości między współrzędnymi - algorytm, wyszukiwanie binarne

BinarySearch dla odległości między współrzędnymi - algorytm, wyszukiwanie binarne

Jak używać wyszukiwania binarnego, aby sprawdzić, czy istnieje odległość między liczbami sąsiadów większymi niż N w posortowanej tablicy? Na przykład:

Input: 2 5 8 11 16
Distance: 4

Powinniśmy więc uzyskać odpowiedź, że istnieje taka odległość między sąsiadami. (między 11 a 16)

EDYCJA: Pozwól mi wyjaśnić, dlaczego chcę to zrobić za pomocą wyszukiwania binarnego.
Załóżmy, że tablica INPUT jest nieposortowana. Dawny:

Input: 11 8 2 16 5

Następnie należy posortować tablicę, aby zobaczyć, którzy są sąsiadami. Więc po tym, jak mamy posortowaną listę, czy nie jest to najlepszy sposób na znalezienie odległości z jakąś mutacją wyszukiwania binarnego?

Odpowiedzi:

0 dla odpowiedzi № 1

Nie można użyć wyszukiwania binarnego w najgorszym przypadku, gdy wszystkie liczby są równo rozmieszczone N.

Ideą wyszukiwania binarnego i innych algorytmów dziel i zwyciężaj jest to, że eliminujesz mniej więcej połowę pozostałego zakresu na każdym kroku. Gdy wszystkie elementy są rozmieszczone w odstępach N, każdy zakres trzech lub więcej kolejnych przedmiotów może potencjalnie zawierać parę sąsiadów z odległością > N, więc nie można wyeliminować żadnego z dwóch rozważanych podzakresów. Ostatecznie zbadasz każdą parę kolejnych przedmiotów, co cię kosztuje O(NumItems).

Można jednak zoptymalizować ogólny przypadek, aby zrobić znacznie lepiej niż O(NumItems) z powodu potencjalnych możliwości przycinania.


0 dla odpowiedzi nr 2

Ty (cóż, ja) nie chciałbym: wyszukiwanie binarne wymaga posortowanej listy, a ty poświęcisz więcej czasu na sortowanie tej listy (par sąsiednich przedmiotów, uporządkowanych według ich odległości), niż po prostu skanowałbyś listę.