提高循环的效率:折半查找算法
来源:互联网 发布:linux 开发Android 编辑:程序博客网 时间:2024/06/06 12:26
通过最近的看书学习,获益匪浅。
下面介绍一种折半查找算法:
比如我买了一双鞋,你好奇问我多少钱,我说不超过300,然后让你猜,那么你一定每次猜中间数。
举个例子,若实现在主函数内,一有序数组{1,2,3,4,5,6,7,8,9,10}中寻找7在哪
那么就不用一一查找,直接用这种算法,最多只计算4次。
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int left = 0; //定义左值
int right = sizeof(arr)/sizeof(arr[0])-1; //定义右值
int i = 0;
int key = 7;
int mid = 0; //定义中间值
while(left<=right)
{
mid = left+(right-left)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid]<key)
{
left = mid+1;
}
else
{
break;
}
}
if(left <= right)
printf("%d",mid);
else
printf("no");
return 0;
}
;另外,再介绍一种比较好的求平均值的办法,比如当球两个整形a和b的平均值,若a+b大于最大值,那么程序一定出错。
如果用大的数减去小的数的一半给小的数,那么就是平均值,这样做不会超过最大值,所以程序不会出错。
具体:两个整形a和b(a<b)
求平均值x:x=a+(b-a)/2
阅读全文
0 0
- 提高循环的效率:折半查找算法
- 有序整形数组,提升效率的折半查找算法
- 递归的折半查找算法
- 折半查找算法的实现
- 折半查找的递归算法
- 折半查找算法的使用
- 递归的折半查找算法
- 折半查找算法的实现
- 折半查找的递归算法
- 折半查找的递归算法
- 查找算法 折半查找算法
- Delphi写的折半查找算法实现
- 查找算法的实现 顺序和折半
- 第十三周-验证折半查找的算法
- 折半查找算法的正确实现
- 第十四周 折半查找算法的验证
- 有序表折半查找的递归算法
- 验证算法(递归的折半查找)
- 北航教授多旋翼无人机教程
- VS创建和开发ocx示例
- Scala option类型和偏函数
- 1.c++中预定义宏_func_
- api-ms-win-crt-runtimel1-1-0.dll缺失
- 提高循环的效率:折半查找算法
- Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
- SPRINGMYBATIS01 Unit08: Spring与MyBatis整合 、 Spring整合MyBatis应用
- LigerUI扩展,进入后台时打开上次未关闭的菜单
- EventBus使用
- 一次完整的http请求
- hdoj 4146(Flip Game)
- 疯狂java学习笔记(二)
- 使用手机BLE连接VEML6075的可穿戴平台紫外检测功能开发