Struktury danych - jakiej użyć?

Struktury danych - jakiej użyć?
OR
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 8 lat
  • Postów:11
0

Witam. Zastanawia mnie jakiej struktury danych użyć, by w najefektywniejszy sposób móc przestawiać elementy jakiegoś zbioru. Np. mam ciąg znaków "GHIJ" i chcę sobie np. przestawić "I" na początek, dzięki czemu uzyskam "IGHJ". Do czegoś takiego najlepszym rozwiązaniem będzie lista dwukierunkowa czy może da się to wykonać jakoś lepiej?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 5 godzin
0

Zadanie Litery?

Nie ma takiej implementacji listy, która w czasie O(1) pozwoli na operacje "dodaj", "usuń", "przesuń" oraz "odczytaj pozycję".


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:6 miesięcy
  • Postów:2514
0

lista jest dobra do usuwania i przestawiania, aczkolwiek odległości między literami odczytasz tylko w czasie liniowym, próbuj dalej :P da się to zrobić w O(n log n) kombinując trochę, a jak nic nie wymyślisz to postaraj się zrobić jak najszybsze O(n^2)


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq
Wibowit
nie należy podawać złożoności do zadań z OI!
KR
gdybym ja zawsze robił to co należy to za parę lat zostałbym papieżem :P nie grozi mi wywalenie, bo nie biorę w tym udziału :P złożoności praktycznie zawsze masz takie: n1000: O(n<sup>2), n10</sup>5: O(n log n) n~10^9: O(log n) lub O(1)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.