Package xyz.cofe.sort

Class BinFinderImpl


  • public class BinFinderImpl
    extends Object
    Реализация функций бинарного поиска
    • Constructor Detail

      • BinFinderImpl

        public BinFinderImpl()
    • Method Detail

      • headIndex

        public static <LIST,​E> int headIndex​(BinFinder<LIST,​E> finder,
                                                   LIST lst,
                                                   Comparator<E> cmp,
                                                   E target,
                                                   int begin,
                                                   int endex)
        Поиск "головы" - ищет в списке начало некого значения.

        Пример есть список:
        [0] = 2 // <- это будет "голова" для искомого значения 3
        [1] = 2
        [2] = 3
        [3] = 5 // <- это будет "голова" для искомого значения 7
        [4] = 8
        [5] = 8
        [6] = 9

        Type Parameters:
        LIST - Тип списка
        E - Тип элемента в списке
        Parameters:
        finder - ссылка на интерфейс BinFinder, для доступа к функции BinFinder.get(Object, int)
        lst - список
        cmp - функция согласно которой отсортированы элементы в списке
        target - искомое значение
        begin - начало области поиска
        endex - конец (исключительно) области поиска
        Returns:
        индекс соответ голове или -1, еслли не найдено
      • tailIndex

        public static <LIST,​E> int tailIndex​(BinFinder<LIST,​E> finder,
                                                   LIST lst,
                                                   Comparator<E> cmp,
                                                   E target,
                                                   int begin,
                                                   int endex,
                                                   E found,
                                                   int foundIndex)
        Поиск "хвоста" - ищет в списке хвост некого значения.

        Пример есть список:
        [0] = 2
        [1] = 2
        [2] = 3 // <- это будет "хвост" для искомого значения 2
        [3] = 5 // <- это будет "хвост" для искомого значения 4
        [4] = 8
        [5] = 8
        [6] = 9 // <- это будет "хвост" для искомого значения 8

        Type Parameters:
        LIST - Тип списка
        E - Тип элемента в списке
        Parameters:
        finder - ссылка на интерфейс BinFinder, для доступа к функции BinFinder.get(Object, int)
        lst - список
        cmp - функция согласно которой отсортированы элементы в списке
        target - искомое значение
        begin - начало области поиска
        endex - конец (исключительно) области поиска
        found - ранее найденое значение
        foundIndex - ранее найденый индекс
        Returns:
        индекс соответ хвосту или -1, еслли не найдено
      • tailIndex

        public static <LIST,​E> int tailIndex​(BinFinder<LIST,​E> finder,
                                                   LIST lst,
                                                   Comparator<E> cmp,
                                                   E target,
                                                   int begin,
                                                   int endex)
        Поиск "хвоста" - ищет в списке хвост некого значения.

        Пример есть список:
        [0] = 2
        [1] = 2
        [2] = 3 // <- это будет "хвост" для искомого значения 2
        [3] = 5 // <- это будет "хвост" для искомого значения 4
        [4] = 8
        [5] = 8
        [6] = 9 // <- это будет "хвост" для искомого значения 8

        Type Parameters:
        LIST - Тип списка
        E - Тип элемента в списке
        Parameters:
        finder - ссылка на интерфейс BinFinder, для доступа к функции BinFinder.get(Object, int)
        lst - список
        cmp - функция согласно которой отсортированы элементы в списке
        target - искомое значение
        begin - начало области поиска
        endex - конец (исключительно) области поиска
        Returns:
        индекс соответ хвосту или -1, еслли не найдено