Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 17:13   #1
Driver_09
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 61
Сообщение Сортировка и поиск в массиве

Мне нужно отсортировать массив и сделать в нём два поиска.
Сортировка должна быть гномной. Поиски бинарный и интерполяционный.
Программу я написал, но правильно только генерирование произвольного массива. Я думаю, что неправильно вызываю сортировку. Поиски даже не выводил, но они в виде процедуры есть...
Помогите разобраться как вызвать...
Цитата:
uses
SysUtils;

const NMAX=10;
type mas=array[1..NMAX] of integer;

procedure generate(var m:mas);
var i:integer;
begin
Randomize;
for i:= 1 to NMAX do
m[i]:=Random(99);
end;

procedure show(m:mas);
var i:integer;
begin
for i:=1 to NMAX do
write(m[i],' ');
writeln;
end;


procedure gnome_sort(var m:mas);
var cnt,i,tmp:integer;
begin
cnt:=0;
i:=1;
repeat
if(m[i]>m[i+1]) then
begin
tmp:=m[i];
m[i]:=m[i+1];
m[i+1]:=tmp;
i:=i-1;
if (i<1) then
i:=1;
end
else
i:=i+1;
begin
if (m[i]<m[i+1]) then
end;
until(cnt=0)
end;

Function poisk_bin(var m:mas; NMAX,v:integer):integer;
Var l,r,cr,k:integer;
begin

l:=1;

r:=NMAX;
Result:=-1;
while (l<=r) do
begin
cr:=((l+r) div 2);
inc(K);
if (v=m[cr]) then
begin
Result:=cr;
break;
end
else if (v>m[cr]) then
l:=cr+1
else
r:=cr-1;;
end;

end;

Function poisk_inter(var m:mas; NMAX,v:integer):integer;
var L,R,i,n:integer;
begin
R:=NMAX;
l:=1;
result:=-1;
while (L<=R) do
begin
inc(l);
i:=(L+((R-L)*(v-m[L]))div(m[R]-m[L]));
if v>m[i] then
L:=i+1
else if v<m[i] then
R:=i-1
else
begin
Result:=i;
break;
end;
end;

end;

var m,N: mas;
begin
generate(m);
show(m);
gnome_sort(m);
show(m);
readln;
end.
Driver_09 вне форума Ответить с цитированием
Старый 14.05.2010, 20:03   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Что такое - гномная сортировка? Я такой не знаю и гугл с яндексом тоже.
Та функция сортировки, что у тебя, по-моему, вообще не должна компилироваться. На каком Паскале это написано? По коду непонятно, как должна происходить сортировка. Ссылку кинь, что за сортировку имеешь в виду.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 14.05.2010, 21:20   #3
Driver_09
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 61
По умолчанию

это написано в делфи, забыл указать.
Ну моя функция действительно почему-то не компилирует((
Вообще алгоритм гномной сортировки такой:
Цитата:
1)Сравнить соседние элементы, если 1ый>2ого, то поменять их местами.
2)Если элементы поменяны местами, то перейти к предыдущему* элементу, иначе к следующему.
3)Если достигнут конец массива, то он уже отсортирован.
* - если текущий элемент первый, то к предыдущему не переходим.
Driver_09 вне форума Ответить с цитированием
Старый 14.05.2010, 21:57   #4
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Вот вроде твоя сортировка. Правда компилировал на пальцах, нет паскаля под рукой.

Код:
const N =10;
var 
 A:array[1..N] of Integer;
 index,vtmp : Integer;
begin
index := 1;
repeat
if A[index] > A[index+1] then 
 begin 
 vtmp:= A[index];A[index]:=A[index+1];A[index+1]:=vtmp;
 if index = 1 then index:=index+1
 else index := index-1;
 end
else 
 index :=index+1;
until ( index=N )
end;
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 14.05.2010, 22:38   #5
Driver_09
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 61
По умолчанию

Z1000000, спасибо, сортировка заработала)
Подскажи ещё немного: вот поиски у меня есть, я их уже в самой проге буду вызывать, от какой переменной их сделать? Тоже от M?
Driver_09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в массиве maksim_serg Microsoft Office Excel 13 13.05.2010 17:36
СОРТИРОВКа ИНФОРМАЦИИ В МАССИВЕ??? dozor Общие вопросы C/C++ 1 23.12.2009 10:39
Поиск в массиве Paul_AG Общие вопросы C/C++ 9 03.06.2009 01:29
Сортировка отр. элементов в двумерном массиве SWAT Паскаль, Turbo Pascal, PascalABC.NET 3 02.04.2009 21:43
сортировка в многомерном массиве LeoN PHP 8 03.06.2008 15:39