Интерполяционный поиск не работает на определенном ряду из 10 чисел
#include<stdio.h> #include<stdlib.h> int main() { int lo,key,m,i,hi; int arr[10]; printf("enter the elements of array\n"); for(i=0; i<10; i++) { scanf("%d",&arr[i]); } printf("enter the key\n"); scanf("%d",&key); lo = 0; hi = 9; while(hi >=lo) { m = lo+((hi-lo)/(arr[hi]-arr[lo]))*(key-arr[lo]); if(key == arr[m]) { printf("key found at location : %d",m); return 0; } else if(key < arr[m]) hi = m-1; else lo = m+1; } printf("key not found\n"); return 0; }
Что я уже пробовал:
он нормально работает для других серий, но когда я запускаю программу и ставлю эту серию, то возникает какая-то проблема.
вход : 1,3,5,7,9,11,15,16,17,18
ключевое значение : 12
желаемый o / p = ключ не найден
фактическая о/п = сегментации не