searchable.searchsequence

## Class MergeSortedSearchSequence

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

- All Implemented Interfaces:
    Searchable, SearchableWithMedian

      class MergeSortedSearchSequence
      extends SortedSearchSequence
      implements Searchable

  Implementace vyhledávací posloupnosti seřazné sléváním.

  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 lze používat v aplikacích

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `moveCnt` počítadlo provozního měření
    `private SortableSequenceFactory` | `seqFactory` továrna na pomocné posloupnosti

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

      `isSorted, sortCounter`

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

      `sequence`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private SortableSequence` | `merge(ShallowSequence segment, SortableSequence lower, SortableSequence upper)` Slije dva poloviční úseky lower a upper do jednoho nového velkého úseku result.
    `protected int` | `sort()` Seřadí prvky posloupnosti vzestupně podle klíčů.
    `private SortableSequence` | `SortSegment(ShallowSequence segment)` Seřadí úsek posloupnosti sléváním.

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

      `getSortCounter, insert, remove, select, selectMedian, update`

    - ### 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, getSortCounter, insert, isEmpty, isFull, remove, select, update`

- - ### Field Detail

    - #### moveCnt

          private int moveCnt

      počítadlo provozního měření

    - #### seqFactory

          private SortableSequenceFactory seqFactory

      továrna na pomocné posloupnosti

  - ### Constructor Detail

    - #### MergeSortedSearchSequence

          public MergeSortedSearchSequence(SortableSequenceFactory aFactory,
                                           int aSize)

      Vyrobí instanci vyhledávací posloupnosti MergeSortedSearchSequence.

      Popis: inicializuje atributy instance.

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

  - ### Method Detail

    - #### merge

          private SortableSequence merge(ShallowSequence segment,
                                         SortableSequence lower,
                                         SortableSequence upper)

      Slije dva poloviční úseky lower a upper do jednoho nového velkého úseku result.

      Vyžaduje: not lower.isEmpty and not upper.isEmpty

      Parameters:
        `segment` - úsek, který se má seřadit
        `lower` - dolní úsek
        `upper` - horní úsek
      Returns:
        slitá posloupnost

    - #### SortSegment

          private SortableSequence SortSegment(ShallowSequence segment)

      Seřadí úsek posloupnosti sléváním.
      Parameters:
        `segment` - úsek, který se má seřadit
      Returns:
        seřazený úsek v nové instanci posloupnosti

    - #### sort

          protected int sort()

      Seřadí prvky posloupnosti vzestupně podle klíčů. Popis: řazení sléváním (mergesort): rozdělí pole na dva neseřazené úseky, každý z nich zvlášť rekurzivně seřadí a seřazené úseky pak slije dohromady.

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

      Specified by:
        `sort` in class `SortedSearchSequence`
      Returns:
        počet kroků potřebných k seřazení posloupnosti