Wszystko zależy od rodzaju operacji, które wykonujesz podczas iteracji, wszystkie struktury danych mają kompromis między czasem a pamięcią iw zależności od naszych potrzeb powinniśmy wybrać odpowiedni DS. Są więc przypadki, w których LinkedList są szybsze niż array i odwrotnie. Rozważ trzy podstawowe operacje na strukturach danych.
Ponieważ tablica jest oparta na indeksach, wyszukiwanie struktury danych array.get (index) zajmie O (1) czasu, podczas gdy lista linkowana nie jest indeksem DS, więc będziesz musiał przejść do indeksu, gdzie indeks <= n, n to rozmiar listy połączonej, więc tablica jest szybsza niż połączona lista, gdy mamy swobodny dostęp do elementów.
P: Więc jakie jest piękno tego?
Ponieważ tablice są ciągłymi blokami pamięci, duże fragmenty z nich zostaną załadowane do pamięci podręcznej przy pierwszym dostępie, co sprawia, że dostęp do pozostałych elementów tablicy jest stosunkowo szybki, o ile uzyskujemy dostęp do elementów w lokalizacji odniesienia tablicy, a tym samym mniejszy chwyt misses, lokalizacja pamięci podręcznej odnosi się do operacji znajdujących się w pamięci podręcznej, a tym samym wykonywanych znacznie szybciej niż w pamięci, w zasadzie w tablicy maksymalizujemy szanse na dostęp do elementu sekwencyjnego w pamięci podręcznej. Chociaż połączone listy niekoniecznie muszą znajdować się w ciągłych blokach pamięci, nie ma gwarancji, że elementy, które pojawiają się sekwencyjnie na liście, są faktycznie ułożone blisko siebie w pamięci, oznacza to mniej trafień w pamięci podręcznej, np.
Jest to łatwe i szybkie w LinkedList, ponieważ wstawianie jest operacją O (1) w LinkedList (w Javie) w porównaniu z tablicą; rozważmy przypadek, gdy tablica jest pełna, musimy skopiować zawartość do nowej tablicy, jeśli tablica się zapełni, co powoduje wstawienie element ArrayList z O (n) w najgorszym przypadku, podczas gdy ArrayList musi również zaktualizować swój indeks, jeśli wstawisz coś w dowolnym miejscu poza końcem tablicy, w przypadku listy połączonej nie musimy zmieniać jej rozmiaru, po prostu musisz wskaźniki aktualizacji.
Działa jak wstawienia i lepiej w LinkedList niż tablica.