查找算法:二分查找
2015-01-21 19:03
274 查看
所谓二分查找就是就是拿要查找的元素s与一个有序序列中最中间的那个元素m比较,如果m==s.查找结束,如果m>s,则对最小元素到m之间的序列再次进行二分查找,如果m<s,则对m到最大元素之间的序列再次进行二分查找,原理如此,转换成代码如下:
#include <stdio.h>
int bs(int a[],int length,int x )
{
printf("suppose your array is ascending order\n");
int LowIndex=0,HighIndex=length-1,middle=0;
if(x>a[HighIndex]||x<a[LowIndex])
return -1;
while(LowIndex<=HighIndex)
{
middle=LowIndex+(HighIndex-LowIndex)/2;
if(a[middle]==x)
return middle;
else if(a[middle]>x)
{
HighIndex=middle-1;
}
else
{
LowIndex=middle+1;
}
}
return -1;
}
int main(void)
{
int x,a[]={1,2,3,5,6,7,8,9,10,11};
scanf("%d",&x);
printf("The searching result is %d\n",bs(a,10,x));
return 0;
}
#include <stdio.h>
int bs(int a[],int length,int x )
{
printf("suppose your array is ascending order\n");
int LowIndex=0,HighIndex=length-1,middle=0;
if(x>a[HighIndex]||x<a[LowIndex])
return -1;
while(LowIndex<=HighIndex)
{
middle=LowIndex+(HighIndex-LowIndex)/2;
if(a[middle]==x)
return middle;
else if(a[middle]>x)
{
HighIndex=middle-1;
}
else
{
LowIndex=middle+1;
}
}
return -1;
}
int main(void)
{
int x,a[]={1,2,3,5,6,7,8,9,10,11};
scanf("%d",&x);
printf("The searching result is %d\n",bs(a,10,x));
return 0;
}
相关文章推荐
- 查找算法_二分查找
- java查找算法(三)--二分非递归查找
- 查找算法一之顺序查找 二分查找
- 查找算法系列之简单查找:顺序查找、二分查找、分块查找
- Java中常用的查找算法——顺序查找和二分查找
- 写了二分查找算法,欢迎查找算法bug
- 基本查找算法 PHP 实现 保存 顺序查找,二分查找 分块查找
- 查找算法的实现——二分查找
- Java中常用的查找算法——顺序查找和二分查找
- 查找算法 二分查找
- 【算法分析】查找算法:二分查找、顺序查找
- 查找算法总结:顺序查找,二分查找,分块查找,散列查找,二叉排序树查找
- 三种静态查找算法:顺序、二分/折半、索引/分块查找
- 经典查找算法 - 二分查找
- 2. C#数据结构与算法 -- 查找算法(顺序查找,哈希查找,二分查找(折半),索引,二叉)
- 查找算法之二分查找
- 算法 查找算法--二分查找
- Java实现的两种常见简单查找算法示例【快速查找与二分查找】
- 算法系列(二)查找算法--基本查找和二分查找
- 查找算法:二分查找、顺序查找