searchable.searchsequence

## Class SortedSearchSequence

- java.lang.Object
- - searchable.searchsequence.SearchSequence
  - - searchable.searchsequence.SearchSequenceWithOrderedSelect
    - - searchable.searchsequence.SortedSearchSequence

- All Implemented Interfaces:
    Searchable, SearchableWithMedian
  Direct Known Subclasses:
    BubbleSortedSearchSequence, CountingSortedSearchSequence, DirSelSortedSearchSequence, HeapSortedSearchSequence, InsertionSortedSearchSequence, MergeSortedSearchSequence, QuickSortedSearchSequence

      abstract class SortedSearchSequence
      extends SearchSequenceWithOrderedSelect
      implements Searchable

  Abstraktní seřazená vyhledávací posloupnost. Implementace metody sort je úkolem potomků.

  Popis: Operace insert je rychlá, ale může narušit seřazení prvků v posloupnosti. Proto před operacemi select, update nebo remove, které následují po operaci insert, musíme seřadit posloupnost. K tomu slouží metoda sort.

  Užití: Instance této třídy nelze používat. Odvoďte potomka a implementujte metodu sort.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `isSorted` Pamatuje si, zda seřazení posloupnosti nebylo narušeno.
    `protected int` | `sortCounter` Počítadlo operací vložení, vyjmutí nebo záměny prvku při řazení.

    - ### Fields inherited from class searchable.searchsequence.SearchSequence

      `sequence`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SortedSearchSequence(SortableSequenceFactory aFactory, int aSize)` Inicializuje instanci vyhledávací posloupnosti SortedSearchSequence.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getSortCounter()` Provozní měření.
    `void` | `insert(SearchableElement elem)` Vloží prvek do posloupnosti.
    `SearchableElement` | `remove(SearchableElement key)` Najde a odstraní prvek z vyhledávací struktury.
    `SearchableElement` | `select(SearchableElement key)` Najde prvek posloupnosti podle klíče.
    `SearchableElement` | `selectMedian()` Najde medián.
    `protected abstract int` | `sort()` Seřadí prvky posloupnosti vzestupně podle klíčů.
    `SearchableElement` | `update(SearchableElement elem)` Najde a upraví nebo nenajde a vloží prvek vyhledávací struktury.

    - ### Methods inherited from class searchable.searchsequence.SearchSequenceWithOrderedSelect

      `orderedSelect`

    - ### Methods inherited from class searchable.searchsequence.SearchSequence

      `getCount, getOperationCounter, getReadable, isEmpty, isFull, setSequence`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface searchable.searchableinterface.Searchable

      `getCount, getOperationCounter, getReadable, isEmpty, isFull`

- - ### Field Detail

    - #### sortCounter

          protected int sortCounter

      Počítadlo operací vložení, vyjmutí nebo záměny prvku při řazení.

    - #### isSorted

          protected boolean isSorted

      Pamatuje si, zda seřazení posloupnosti nebylo narušeno.

  - ### Constructor Detail

    - #### SortedSearchSequence

          public SortedSearchSequence(SortableSequenceFactory aFactory,
                                      int aSize)

      Inicializuje instanci vyhledávací posloupnosti SortedSearchSequence.

      Popis: inicializuje atributy instance.

      Užití: zejména ve factory

      Parameters:
        `aFactory` - továrna na seřaditelné posloupnosti
        `aSize` - požadovaná kapacita seřaditelné posloupnosti

  - ### Method Detail

    - #### sort

          protected abstract int sort()

      Seřadí prvky posloupnosti vzestupně podle klíčů.

      Mění: změní pořadí prvků v posloupnosti.

      Returns:
        počet kroků potřebných k seřazní posloupnosti

    - #### select

          public SearchableElement select(SearchableElement key)

      Description copied from class: `SearchSequenceWithOrderedSelect`
      Najde prvek posloupnosti podle klíče.

      Vyžaduje: posloupnost sequence musí být seřazena vzestupně.

      Specified by:
        `select` in interface `Searchable`
      Overrides:
        `select` in class `SearchSequenceWithOrderedSelect`
      Parameters:
        `key` - klíč
      Returns:
        nalezený prvek nebo null

    - #### update

          public SearchableElement update(SearchableElement elem)

      Description copied from interface: `Searchable`
      Najde a upraví nebo nenajde a vloží prvek vyhledávací struktury.
      Specified by:
        `update` in interface `Searchable`
      Overrides:
        `update` in class `SearchSequenceWithOrderedSelect`
      Parameters:
        `elem` - prvek, který se má upravit nebo vložit
      Returns:
        odstraněný původní prvek nebo null

    - #### insert

          public void insert(SearchableElement elem)

      Description copied from class: `SearchSequence`
      Vloží prvek do posloupnosti.

      Popis: přidá nový prvek vždy na konec posloupnosti.

      Vyžaduje: not isFull

      Specified by:
        `insert` in interface `Searchable`
      Overrides:
        `insert` in class `SearchSequence`
      Parameters:
        `elem` - prvek, který se má vložit

    - #### remove

          public SearchableElement remove(SearchableElement key)

      Description copied from interface: `Searchable`
      Najde a odstraní prvek z vyhledávací struktury.

      Popis: najde prvek podle klíče key a odstraní jej z vyhledávací struktury.

      Specified by:
        `remove` in interface `Searchable`
      Overrides:
        `remove` in class `SearchSequence`
      Parameters:
        `key` - klíč prvku, který se má odstranit
      Returns:
        odstraněný prvek nebo null

    - #### selectMedian

          public SearchableElement selectMedian()

      Description copied from interface: `SearchableWithMedian`
      Najde medián. Medián je prostřední prvek z posloupnosti nebo jiné uspořádané struktury. V případě sudého počtu prvků není výsledek jednoznačný - je lhostejné, který se najde.
      Specified by:
        `selectMedian` in interface `SearchableWithMedian`
      Specified by:
        `selectMedian` in class `SearchSequenceWithOrderedSelect`
      Returns:
        medián

    - #### getSortCounter

          public int getSortCounter()

      Description copied from interface: `Searchable`
      Provozní měření. Zjistí počet elementárních operací vyjmutí, vložení nebo záměny prvku během poslední operace sort.
      Specified by:
        `getSortCounter` in interface `Searchable`
      Overrides:
        `getSortCounter` in class `SearchSequence`
      Returns:
        počet významných elementárních operací