二分查找
来源:互联网 发布:java马士兵教程 编辑:程序博客网 时间:2024/05/15 05:44
二分查找就是不停的将数组折半,每次拿中间元素和goal元素进行比较。
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:
****1.第一步查找中间元素,即5,由于5<6,则6必然在5之后的数组元素中,那么就在{6, 7, 8, 9}中查找,
2.寻找{6, 7, 8, 9}的中位数,为7,7>6,则6应该在7左边的数组元素中,那么只剩下6,即找到了。**
int binary_search (int * arr, int len, int goal){ int low = 0, high = len-1; while (low <= high) { int middle = (high - low) / 2 + low;//使用(high+ low)可能会导致溢出 if(arr[middle] == goal) return middle; else if(a[middle] > goal) high = middle - 1;//左半边 else low = middle + 1;//右半边 } return -1;//没找到}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 结构体
- 润乾报表打印多边框线问题
- Windows下Eclipse中Python开发环境的搭建&自动添加utf-8设置
- 关于linux signal 6 (SIGABRT)
- 软件测试(第2版)_Paul学习06_02——Ch6等价类测试_02
- 二分查找
- Ubuntu 14.04安装caffe only CPU
- 单词查找树
- 杂花生树(二十八)
- java泛型
- hibernate异常:文档无效: 找不到语法
- 2016年 11月 26日 星期六 10:22:26 CST
- SSM框架——使用MyBatis Generator自动创建代码 [转的]
- MongoDB介绍及下载与安装