Записки программиста Программирование и не только

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.

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Trackbacks are disabled.