не деления.. . а делением.. . это алгоритм быстрого поиска
суть в том, что массив сначала сортируется, а затем берется его средний элемент и сравнивается с критерием поиска
если критерий поиска больше среднего элемента - запоминается вторая часть массива.
если меньше - первая.
далее берется выбранная часть массива и снова делится пополам.. . и опять.. . так до тех пор, пока не найдется необходимый элемент.. .
var critValue: real;
arrValues: array[1..100] of real;
subArray: array [1..50] of real;
midValue: real;
arrCount: integer;
i: integerl;
j: integerl;
stIndex: integer;
endIndex: integer;
value: real;
begin
for i:=1 to 100 do
for j:=1 to 99 do
if arrValues[j] > arrValues[j+1] then
begin
value := arrValues[j];
arrValues[j] := arrValues[j+1];
arrValues[j+1] := value;
end;
arrCount := 100;
repeat
midValue := arrValues[arrCount div 2];
if (critValue > midValue) then
begin
stIndex := arrCount div 2;
endIndex := arrCount;
end
else if (critValue < midValue) then
begin
stIndex := 1;
endIndex := arrCount div 2;
end
else
begin
writeln('Element found!');
halt(0);
end;
j := 0;
for i := stIndex to endIndex do
begin
i := i + 1;
subArray := arrValues[j];
end;
arrCount := arrCount div 2;
if (arrCount = 0) then
begin
writeln("Element is not found!");
halt(0);
end;
for i:=1 to arrCount do
arrValues := subArray;
until true;
end.
с синтаксисом могут быть проблемы, компилятора нет, а писал на паскале последний раз в лицее.. . лет 10 назад.. . но смысл примерно таков.
Другие языки программирования и технологии
помогите плиз написать программу на паскале...тема массивы...нужно использовать поиск деления пополам!!!нужно срочно!
Напиши задание полностью..
Похожие вопросы
- Помогите пожалуйста написать программу в Паскале )) Написать программу для вычисления суммы в массиве из 10 элементов
- Срочно.Помогите пожалуйста написать программу на паскале.
- люди добрые помогите мне написать программу в паскале, метод Рунге Кутта. Математическое решение есть у меня
- Помогите, пожалуйста, написать программу на Паскале хотя бы примерно
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
- Помогите плиз, написать прогу на Си++! Срочно очень нужно!
- Помогите пожалуйста написать программу для Паскаля
- Помогите пожалуйста написать программу на паскале:
- помогите, пожалуйста, написать программу в паскале! сложные циклы.
- Помогите плиз написать программу(язык Си)
Метод деления пополам применим только для УЖЕ ОТСОРТИРОВАННЫХ массивов, поэтому сортировать не надо.
но программа не выполняется