Модифицированный бинарный поиск: программа завершается с ошибкой - C (СИ)
Формулировка задачи:
Доброго времени суток. Чутка модифицировал функцию бинарного поиска и теперь программа завершается с ошибкой, причем в режиме отладчика завершается все нормально. Прошу помощи.
#include <stdio.h>
#include <stdlib.h>
#define SIZE 200
int binsearch(int, int [SIZE], int);
void SetMass (int [], int, int);
int main()
{
int x, v[SIZE], result;
SetMass(v, 150, 1);
x = 250;
result = binsearch(x, v, SIZE);
printf("%d\n",result);
return 0;
}
// возращает позицию элемента массива v размерностью n, совпадающего с x; ver.2
int binsearch(int x, int v[], int n) // преполагается что v - упорядочный по возрастанию массив
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high && x != v[mid])
{
mid = (low + high) /2;
if (x < v[mid])
high = mid -1;
else
low = mid + 1;
}
if ( x == v[mid])
return mid;
else
return -1;
}
void SetMass(int v[],int a,int step)// заполняет массив v упорядоченными числами с шагом step
{
int i;
for (i=0; i<SIZE; i++, a += step)
v[i] = a;
}Решение задачи: «Модифицированный бинарный поиск: программа завершается с ошибкой»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define SIZE 200
int binsearch(int, int [SIZE], int);
void SetMass (int [], int, int);
int main()
{
int x, v[SIZE], result;
SetMass(v, 150, 1);
x = 250;
result = binsearch(x, v, SIZE);
printf("%d\n",result);
return 0;
}
// возращает позицию элемента массива v размерностью n, совпадающего с x; ver.2
int binsearch(int x, int v[], int n) // преполагается что v - упорядочный по возрастанию массив
{
int low, high, mid;
low = 0;
high = n - 1;
mid = (low + high) /2;
while (low <= high && x != v[mid])
{
if (x < v[mid])
high = mid -1;
else
low = mid + 1;
mid = (low + high) /2;
}
if ( x == v[mid])
return mid;
else
return -1;
}
void SetMass(int v[],int a,int step)// заполняет массив v упорядоченными числами с шагом step
{
int i;
for (i=0; i<SIZE; i++, a += step)
v[i] = a;
}
Объяснение кода листинга программы
- Программа включает две функции:
binsearchиSetMass. - Функция
binsearchвыполняет модифицированный бинарный поиск в массивеvэлементов, гдеn- размер массива. - В функции
mainсоздается массивvразмером200, заполняется значениями с шагом1с помощью функцииSetMassи инициализируется переменнаяxзначением250. - Затем вызывается функция
binsearchс аргументамиx,vи200, и результат поиска выводится на экран. - Функция
SetMassзаполняет массивvзначениями с шагомstep. - Если в процессе бинарного поиска найден элемент
x, функция возвращает его индекс. - Если элемент
xне найден, функция возвращает-1.