二分查找
来源:互联网 发布:dagger 源码 编辑:程序博客网 时间:2024/06/05 14:53
#include <stdio.h>
int search(int low, int high, int a[], int key)
{
if(low > high)
return -1;
int mid = low + (high-low)/2;
if(a[mid] == key)
return mid;
return (a[mid] > key ? search(low,mid-1,a,key) : search(mid+1,high,a,key));
}
int main()
{
int a[] = {12,23,4,56,77,99,134,52};
int n = search(0, sizeof(a)/sizeof(int), a, 99);
printf("%d\n", a[n]);
return 0;
}
int search(int low, int high, int a[], int key)
{
if(low > high)
return -1;
int mid = low + (high-low)/2;
if(a[mid] == key)
return mid;
return (a[mid] > key ? search(low,mid-1,a,key) : search(mid+1,high,a,key));
}
int main()
{
int a[] = {12,23,4,56,77,99,134,52};
int n = search(0, sizeof(a)/sizeof(int), a, 99);
printf("%d\n", a[n]);
return 0;
}
注意 int mid = low + (high - low) / 2;这句,很多面试题目都有这个问题,这个主要是编程的细节问题,开始可能想到这样写:int mid = (low + high) / 2;但是 low,和high的值加起来之后有可能超出int的表示范围,从而使其成为负数。
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 笑点集 4
- HDU 2546 饭卡
- 第十三周项目四:数组的排列(2)
- Shell中脚本变量和函数变量的作用域
- 第13周项目5-字符串操作(2.2)
- 二分查找
- iphone开发之UIImage应用与内存管理,UIImage加载图像方法
- Windows XP远程桌面控制图文教程
- 第十三周 项目5:(1)统计字母“A”出现的个数
- linux驱动头文件说明
- Bzoj 1208: [HNOI2004]宠物收养所
- Nodejs学习路线图
- 第十三周 项目五--字符串操作(1.4)字母统计
- Nginx的安装与配置(Centos6.3)