Metody sortowania

0

Witam,
czy mógłbym prosić o " rozjaśnienie" mi poniższych tematów z przedmiotu Algorytmy i struktury danych.
Przeszukując internet natrafiłem na sporo sprzecznych informacji. Proszę napisać o jakie algorytmy chodzi. Czy dostęp bezpośredni to wewnętrzny a sekwencyjny to zewnętrzny?

  1. Metody sortowania struktur danych o dostępie bezpośrednim - algorytmy,
    własności, zastosowania
  2. Metody sortowania struktur danych o dostępie sekwencyjnym - algorytmy,
    własności, zastosowania .
    Pozdrawiam serdecznie
1

Dostęp bezpośredni to taki kiedy możesz odwołać się w czasie stałym (ewentualnie logarytmicznym) do dowolnego elementu struktury danych. Na przykład dla tablicy. Dostęp sekwencyjny to taki kiedy masz dostęp do elementów tylko po kolei, jak w liście.

Poszukaj sobie o sortowaniu tablic i sortowaniu list.

1

Nigdy się nie spotkałem z określeniami dostępu "wewnętrznego" i "zewnętrznego" więc nie pomogę.

Co do sortowań:

  1. Dostęp bezpośredni to taki, gdzie możemy się odwołać do dowolnej komórki struktury w takim samym (stałym) czasie (i.e. tablice), algorytmy sortowania, które się w takim przypadku stosuje to quicksort i heapsort. Zaletą takowych struktur jest właśnie to, że możemy odwołać się do dowolnej komórki w takim samym, stałym, czasie. Z kolei takie struktury są raczej "statyczne" i zmiana ich rozmiaru jest czasochłonna.
  2. Dostęp sekwencyjny to taki, gdzie możemy się odwołać tylko do aktualnej komórki lub następnej w czasie stałym (i.e. listy), algorytmy stosowane w takim przypadku to, np. mergesort. Tracąc możliwość szybkiego odwołania się do dowolnego pola struktury zyskujemy możliwość łatwego jej rozszerzania (oraz ładnie działa z immutable data).
1

Quicksorta da się zaimplementować na niemutowalnych listach i działa w miarę sprawnie: http://en.literateprograms.org/Quicksort_%28Haskell%29 Zachowuje złożoność obliczeniową liniowologarytmiczną.
Wiele innych sortów też pewnie by się dało sprawnie zaimplementować na niemutowalnych listach. Najwięcej czasu wykonania zajęłoby odśmiecanie, bo ciągłe modyfikowanie struktur danych wymaga tworzenia wielu obiektów.

0

Bardzo dziękuje za odpowiedzi!

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