Posortowana struktura struktury tabeli mieszania (mapa, słownik)
Oto opis struktury danych:
Działa jak zwykła mapa zget
, put
, iremove
metody, ale masort
metoda, która może zostać wywołana do sortowania mapy. Jednak mapapamięta jego posortowana struktura, więc kolejne wywołania do sortowania mogą być znacznie szybsze (jeśli struktura nie zmienia zbytnio między wywołaniami)sort
).
Na przykład:
Dzwonię doput
metoda 1 000 000 razy.Dzwonię do
sort
metoda.Dzwonię do
put
metoda 100 razy więcej.Dzwonię do
sort
metoda.Drugi raz dzwonię dosort
metoda powinna być o wiele szybsza, ponieważ struktura mapy niewiele się zmieniła. Zauważ, że mapa nie musi utrzymywać posortowanej kolejności między połączeniamisort
.
Rozumiem, że to może nie być możliwe, ale mam nadzieję na O (1)get
, put
, iremove
operacje. Coś jakTreeMap zapewnia gwarantowany koszt czasu O (log (n)) dla tych operacji, ale zawsze utrzymuje uporządkowany porządek (niesort
metoda).
Jaki jest projekt tej struktury danych?
Edytuj 1 - zwracając top-K wpisów
Chociaż z przyjemnością wysłucham odpowiedzi na powyższy ogólny przypadek, mój przypadek użycia stał się bardziej szczegółowy: nie potrzebuję sortowania całej rzeczy; tylko top K elementów.
Struktura danych do efektywnego zwrotutop-K wpisy tablicy mieszającej (mapa, słownik)
Dzięki!