Ваш результат поиска будет в диапазоне от вашего упорядоченного списка слов.Чтобы получить это, вам нужен индекс первого и последнего элемента диапазона.
Чтобы получить первый, запустите бинарный поиск с исходной строкой поиска ("se"), сравнивая ее с текущейположение в каждой итерации.Остановитесь, когда слово в текущей позиции будет больше строки поиска, но текущее 1-е слово будет ниже.
Чтобы получить последний индекс, запустите другой двоичный поиск по поисковому запросу + "z" ("sez "), но теперь останавливаются только тогда, когда слово в текущем индексе меньше, чем" sez ", а current + 1 больше.
Наконец, верните диапазон, отмеченный первым и последним индексом, любыми доступными средствами на вашем языке программирования.
Этот метод основан на двух предположениях:
- Сравнение строк показывает, что «b» больше, чем «az»
- «z» - самое высокое значение символа в списке слов
Этот алгоритм реализован в манипуляциях с данными JavaScriptбиблиотека (jOrder.net).