Niedawno przeczytałem, że można mieć tablice, które nie muszą być inicjowane, tzn. Można z nich korzystać bez konieczności poświęcania czasu na ustawianie wartości domyślnej dla każdego elementu. tzn. możesz zacząć używać tablicy tak, jakby została ona zainicjowana wartością domyślną, bez konieczności jej inicjowania. (Przepraszam, nie pamiętam, gdzie to przeczytałem).
Na przykład, dlaczego może to być zaskakujące:
Załóżmy, że próbujesz wymodelować najgorszy przypadek hashtable (dla każdego wstawiania / usuwania / wyszukiwania) liczb całkowitych z zakresu .[ 1 , n 2 ]
Możesz przydzielić tablicę o rozmiarze bitów i użyć pojedynczych bitów do przedstawienia istnienia liczby całkowitej w tablicy mieszającej. Uwaga: przydzielanie pamięci jest traktowane jako czas .O ( 1 )
Teraz, jeśli wcale nie musiałeś inicjować tej tablicy, każda kolejna operacja powiedzenia na tej tablicy hasht jest teraz najgorszym przypadkiem .O ( n )
W efekcie masz „idealną” implementację skrótu, która dla sekwencji operacji wykorzystuje przestrzeń , ale działa w czasie !Θ ( n 2 ) O ( n )
Zwykle można oczekiwać, że środowisko wykonawcze będzie co najmniej tak samo złe, jak wykorzystanie miejsca!
Uwaga: Powyższy przykład może być wykorzystany do implementacji rzadkiego zestawu lub rzadkiej macierzy, więc przypuszczam, że nie jest to tylko przedmiot teoretyczny.
Pytanie brzmi:
Jak można mieć strukturę podobną do tablicy, która pozwala nam pominąć krok inicjalizacji?