Załóżmy, że dwie matryce:Algorytm znalezienia jeśli dwa zestawy przecinają
Int Arraya [] = {5, 17, 150, 230, 285};
int ArrayB [] = {7, 11, 57, 110, 230, 250};
Obie tablice są posortowane i mogą mieć dowolny rozmiar. Szukam skutecznego algorytmu, który sprawdzi, czy tablice zawierają między sobą zduplikowane elementy. Chcę tylko odpowiedzi prawdziwej/fałszywej, nie obchodzi mnie, który element jest udostępniony, ani ile.
Naiwne rozwiązanie polega na przechodzeniu między poszczególnymi elementami ArrayA i wykonaniu w ArrayB binary search. Wierzę, że ta złożoność to O (m * log n).
Ponieważ obie tablice są posortowane, wydaje się, że powinien być skuteczniejszy algorytm.
Chciałbym również ogólne rozwiązanie, które nie zakłada, że tablice przechowują liczby (to znaczy, że rozwiązanie powinno również działać dla łańcuchów). Jednak operatory porównania są dobrze zdefiniowane i obie tablice są sortowane od najmniejszej do największej.
Wystarczy marginesie, mówimy, że złożoność rozwiązania opisanego tu już jest O (m * log n), gdzie m i n są rozmiarami dwóch tablic. –
Miałem przeczucie, że to coś takiego. Dzięki. – Imbue