IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Быстрый поиск в массиве, алгоритм быстрого поиска
Белоснежка
сообщение 20.02.2008 3:02
Сообщение #1


Гость






Помогите с задачей. Искала в поисковиках, в книжках с алгоритмами но ничего не нашла sad.gif
Нужно программку которая производит быстрый поиск (при помощи алгоритма быстрого поиска) заданной буквы в массиве из заданного количества элементов
Я уже все что можно перечитала нигде про алгоритм быстрого поиска ничего не нашла.
Ребятки может кто-то знает? Помогите а?

 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 20.02.2008 13:01
Сообщение #2


Гость






Цитата
(это сортируемый массив) можно заменить на A: String (в нескольких местах). Тогда будет сортироваться строка.
Насколько я вижу, тут вообще нет речи о сортировке, следовательно никакая строка сортироваться не будет. К строке будет применяться алгоритм бинарного поиска - это да... Только надо бы подправить программу, иначе она не то что работать - она и компилироваться не будет...

program Poisk3a;
var
A: string;
midd, left, right:integer;
X: char;
begin
write('Введите упорядоченную строку: '); readln(A);
Write('Что будем искать? '); readln(X);

left:=1; right:=length(A);
while (Right - Left) > 1 do begin
midd := (right + left) div 2;
if X <= A[midd] then right := midd else left := midd
end;

midd := -1;
if X = A[ left ] then midd := left
else
if X = a[ right ] then midd := right;

if midd <> -1 then
write('символ с индексом ', midd ,' является: ', X)
else write('искомый символ не найден');
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"