13Сен/090
Прямой поиск
И вновь алгоритмы. Тут уже есть:
1. Быстрая сортировка (англ. quicksort)
2. Сортировка Шелла (англ. Shell sort)
Добавим алгоритмов поиска. Итак:
Прямой поиск.
Поиск производится путем сравнения первого символа слова с первым символом текста.
Результатом поиска считается индекс, который указывает на первое (с начала текста) совпадение с искомым словом. Если совпадение не происходит, то производится сдвиг слова на одну позицию вправо и процесс сравнения повторяется.
Указанный процесс повторяется до тех пор, пока не будет найдено искомое слово либо конец текста.
Реализация:
int straightFind(int _start, arr &src_str, arr &find_str) { int i, j; int n = (int) src_str.size(); int m = (int) find_str.size(); i = -1 + _start; do { j = 0; i++; while( (j < m) && (src_str.at(i + j) == find_str.at(j)) ) j++; } while( j<m && i<n-m ); if (j == m) { return i; } else return -1; }
_start - позиция, с которой необходимо начать поиск.
arr &src_str и arr &find_str - строка, где ищем и, соотв., сторока, которую ищем.
arr - целочисленный vector.
Leave a comment