二分查找
2016-04-11 20:03
309 查看
二分查找就是折半查找,主要思想:
将要查找的数与表的中间的元素进行比较,若该数与中间值相等那么查找成功;如果该数大于中间的数,那么这个数一定在右子表中,继续对右子表进行折半查找;若该数比中间值小,那么这个数一定在左子表中,继续对左子表进行差找。知道查找成功或查找失败。
二分查找的函数代码如下:
void binary_search(int arr[], int size, int key)
{
int low, high, mid,count=0,count1=0;
low = 0;
high = size - 1;
while (low <= high)
{
count++;//record for number;
mid = (low + high) / 2;
if (key > arr[mid])
{
low = mid + 1;
}
else if (key < arr[mid])
{
high = mid - 1;
}
else if (key == arr[mid])
{
count1++;
printf("success!\nsearch %d times!arr[%d]=%d", count, mid, key);
break;
}
}
if (count1 == 0)
printf("no found!");
}
主函数代码如下:
int main()
{
int arr[100],key ,n, i;
printf("please input the length of array:\n");
scanf("%d", &n);
printf("please input element:\n");
for (i = 0; i < n;i++)
scanf("%d", &arr[i]);
printf("please input the number which do you want to search:\n");
scanf("%d", &key);
binary_search(arr, n, key);
printf("\n");
system("pause");
return 0;
}
将要查找的数与表的中间的元素进行比较,若该数与中间值相等那么查找成功;如果该数大于中间的数,那么这个数一定在右子表中,继续对右子表进行折半查找;若该数比中间值小,那么这个数一定在左子表中,继续对左子表进行差找。知道查找成功或查找失败。
二分查找的函数代码如下:
void binary_search(int arr[], int size, int key)
{
int low, high, mid,count=0,count1=0;
low = 0;
high = size - 1;
while (low <= high)
{
count++;//record for number;
mid = (low + high) / 2;
if (key > arr[mid])
{
low = mid + 1;
}
else if (key < arr[mid])
{
high = mid - 1;
}
else if (key == arr[mid])
{
count1++;
printf("success!\nsearch %d times!arr[%d]=%d", count, mid, key);
break;
}
}
if (count1 == 0)
printf("no found!");
}
主函数代码如下:
int main()
{
int arr[100],key ,n, i;
printf("please input the length of array:\n");
scanf("%d", &n);
printf("please input element:\n");
for (i = 0; i < n;i++)
scanf("%d", &arr[i]);
printf("please input the number which do you want to search:\n");
scanf("%d", &key);
binary_search(arr, n, key);
printf("\n");
system("pause");
return 0;
}
相关文章推荐
- 【UFLDL-exercise7-stacked autoencoder for digit classification】
- 自定义圆图片
- (Array)27. Remove Element
- 由最小生成树算法改到最短路径算法代码----为了区分两者的区别
- 趣味计算:加油站加油
- 利用union类型测试机器是大端还是小端(Big_endian or Little_endian)
- C语言实现小游戏(二)
- 检查机器是大端字节序还是小端字节序
- a+aa+aaa+aaaa+aaaaa
- 模拟密码登录
- C语言实现小游戏(一)
- 可以一直接收键盘字符,并将大写转为小写,小写转为大写,数字不作处理
- 输出一个数的二进制数的奇数序列和偶数序列(三种方法)
- 将十进制转换为二进制和十六进制
- 用正确的方式写if语句——与零值作比较
- 打印100—200之间的素数及优化
- qt+evaluatejavascript
- 常用直线图形生成算法(一)
- 多态继承传递时程序输出匹配顺序
- android api汇集