Algorytm wyszukiwania duplikatow.

0

Jest nastepujacy problem: Mamy liste wskaznikow na struktury, trzeba znalezc wszystkie struktury dla ktorych jedno z pol ma ta sama wartosc.

No i teraz pytanie jest o najszybszy algorytm do czegos takiego. Wymyslilem cos takiego zeby posortowac wszystkie stuktury wzgledem pola ktore nas interesuje a nastepnie przejrzec ta liste posortowanych i sprawdzac czy pole w strukturze n+1 jest takie samo jak w n.

Jakies inne pomysly?

0

W trakcie porównywania w sortowaniu odkładać do osobnej listy informację o duplikacie. Bez dodatkowego przechodzenia przez posortowaną listę.

0

Zależy też od tego co to za pole. Jeśli jest to coś większego to bez hashowania się nie obejdzie.

0
Koziołek napisał(a)

W trakcie porównywania w sortowaniu odkładać do osobnej listy informację o duplikacie. Bez dodatkowego przechodzenia przez posortowaną listę.

Może zrobić taki mechanizm że struktura posiada też wskaźnik na własny typ i po znalezieniu duplikatu wskaźnik na niego byłby usuwany z listy sortowanej i ustawiany w strukturze której duplikat znaleziono lub ostatnim duplikacie tej struktury. Wtedy każda struktura od razu posiadałaby 'listę' swoich duplikatów. Oszczędziłoby to nieco mapowania.

0

Istnieją dwa sensowne rozwiązania tego problemu:

  1. Sortowanie+usuwanie duplikatów - opisane w pierwszym poście
  2. Wstawienie wszystkiego do hashowanego zbioru bez duplikatów (w Javie - HashSet, trzeba jednak zaimplementować metodę hashCode())

Dla dużego zbioru i dobrej funkcji hashującej 2. będzie szybsze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1