您的位置:首页 > 其它

二分查找(折半查找)

2014-06-16 16:34 204 查看
#include<stdio.h>

int dinarysearch(int arr[],int left,int right,int value)

{

int middle=(left+right)/2;

if(left>right)

return -1;

if(value>arr[middle])

return dinarysearch(arr,middle+1,right,value);

if(value<arr[middle])

return dinarysearch(arr,left,middle-1,value);

if(value==arr[middle])

return middle;

}

int main()

{

int arr[]={1,2,3,4,5,6,7};

int value=2;

int i=dinarysearch(arr,0,6,value);

printf("%d\n",i);

getch();

return 0;

}

改进,修改middle的取值,插值查找:

int x=(value-arr[left])/(arr[right]-arr[left]);

int middle=left+x*(right-value);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: