本文介绍了插值搜索不适用于特定系列的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 =未找到密钥

实际o / p =分段失败



What I have tried:

it work normally for other series but when i run the program and put this series then there some problem.
input : 1,3,5,7,9,11,15,16,17,18
key value : 12
desired o/p = key not found
actual o/p = segmentation fail

推荐答案


这篇关于插值搜索不适用于特定系列的10个数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 13:55