二分查找(折半查找)
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);
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);
相关文章推荐
- 二分查找(折半查找),Java实现
- 二分查找(折半查找)算法及代码
- <数据结构与算法>二分查找(折半查找)
- PHP 顺序查找和二分查找(也叫做折半查找)算法
- 算法:二分查找(折半查找)
- 二分查找(折半查找)
- 二分查找(折半查找)
- C++二分查找(折半查找)算法实例详解
- 二分查找(折半查找)的思路与实现 java实现
- 查找第二种:二分查找(折半查找)丶插值查找和斐波那契查找
- 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
- Java代码实现一维数组的二分查找(折半查找)(非递归方法)
- 二分查找(折半查找)
- 二分查找(折半查找)
- 二分查找(折半查找)
- 基于二分查找(折半查找)的时间范围匹配
- 数组元素二分查找(折半查找)
- 二分查找(折半查找)
- 算法 二分查找(折半查找)
- 二分查找(折半查找)