Лабораторные работы / ЛЗ3 / Отчет ЛЗ3
.docМосковский Энергетический Институт (Технический Университет)
Кафедра математического моделирования
Лабораторная работа №3
по ЯПиМТ
«Информационный поиск»
Выполнил: Козлачкова М.Ю.,
А-14-08
Проверил: Зубов В.С.
2010г.
Задание:
Бинарный поиск по заданному интервалу значений ключа. Находим два курсора, левый и правый, обозначающие границы выявляемой группы записей. Они находятся вне группы.
Текст функции:
int Search2(struct tip z[], int n,int Arg1,int Arg2, int Gn, int &Gv)
{
int g1, g2, i, j, k;
int ng, vg;
ng = vg = 100000;
if (ng==100000)
{g1 = 0;
g2 = n;
}
else
{
g1 = ng;
g2 = vg + 1;
}
if (g1 >= g2)
exit;
k = g2;
i = g1;
do
{
j = (i + k)/2;
if (z[j].key > Arg2)
k = j;
else
i = j + 1;
}
while (i!=k);
Gv = k;
if (k==g1)
{
Gn = Gv - 1;
exit;
}
k--;
i = g1 - 1;
do
{
j = (i + k + 1)/2;
if (z[j].key < Arg1)
i = j;
else
k = j - 1;
}
while (i!=k);
Gn = i;
return Gn;
}
Графики:
n – число элементов в массиве структур;
m – число элементов в дополнительном массиве в структуре.