У меня есть задание, требующее, чтобы я использовал алгоритм Binary Interpolation Search, чтобы найти число и его положение в массиве, который я вводю через клавиатуру. К сожалению, пока я не получаю никаких ошибок, программа ничего не возвращает, даже если просит ввести номер! Если у вас есть идея, что может пойти не так, это будет полезно!
Вот мой код:
#include<stdio.h>
#include<math.h>
int bis(int Array[],int x)
{
int i;
int hitpos;
int left = 0;
int right = sizeof(Array);
int size = right - left + 1;
int next;
int a = x - Array[left];
int b = Array[right]-Array[left];
int c = right - left + 1;
int d = (int)(i*sqrt(size));
next = (size*a/b+1);
do
{
i=0;
size = right - left +1;
if(x >= Array[next])
{
do
{
i = i+1;
right = next + i*sqrt(size);
left = next + (i-1)*sqrt(size);
}
while(x > Array[next + d -1]);
}
else if(x < Array[next])
{
do
{
i = i+1;
right = next -(i-1)*sqrt(size);
left = next - i*sqrt(size);
next = left + (c*a/b);
}
while(x < Array[next - d + 1]);
}
else if(x = Array[next])
{
return next;
}
else
{
return -1;
}
}
while (x != Array[next]);
}
int main()
{
int Array[] = {1,8,10,14,31,55,56,78,87,101};
printf("Please provide a number for binary interpolation search\n");
int x;
scanf("%d", x);
int hit;
hit = bis(Array,x);
if (hit != -1)
{
printf("Element found at index %d", hit);
}
else
printf("Element not found.");
return 0;
}