黑马程序员技术交流社区
标题:
C语言:折半查找
[打印本页]
作者:
安若曦
时间:
2015-9-15 15:46
标题:
C语言:折半查找
折半查找:
#include <stdio.h>
/*
* 使用折半查找来查找一个数
*
* @param arr 数组
* @param len 数组长度
* @param key 要查找的数 20
*
* @return 要查找的数的位置,如果查找不到返回值 -1
*/
int searchItem(int arr[],int len, int key){
//先要定义变量
int low=0, high=len-1,mid;
//循环
while (low<=high) {
//计算mid 位置
mid =(low+high)/2;
//判断 key和a[mid],右半区查找
if (key > arr[mid]) {
//key> arr[mid] low= mid+1;
low= mid+1;
}else if (key < arr[mid]){
//key< arr[mid]; high= mid-1;
high= mid-1;
}else{
//key == arr[mid]; //return mid;
return mid;
}
}
//查找不到的情况
return -1;
}
int main(int argc, const char * argv[]) {
//定义一个数组
int a[]={3,4,12,20,21,23,28,45,67,100};
//查找的 key=20
int loc = searchItem(a, 10, 20);
printf("loc = %d\n",loc); // loc = 3;
return 0;
}
复制代码
作者:
malong0517
时间:
2015-9-18 19:48
赞一个 很详细
作者:
f1gogo
时间:
2015-9-18 20:12
2分法,这一思想很值得品味
作者:
huahaoL
时间:
2015-9-18 21:38
赞赞赞.......
作者:
cenjuwei
时间:
2015-9-18 21:39
这个应该不算很难把!我觉得如果你能把一些容易搞乱的东西来一个总结和记忆就好了!比如指针!什么时候是*输出内容什么时候是**输出的话!那就更棒了!
作者:
荣荣
时间:
2015-9-18 22:13
基础视频里有,是个好题,值得仔细研究
作者:
尾尾
时间:
2015-9-19 18:54
查找方法还是蛮重要的
作者:
D_Time
时间:
2015-9-19 22:52
不够详细啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2