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