查找算法:二分法查找
2016-12-11 10:38
162 查看
一、原理
对于长度为n的有序数组,一般我们采用遍历数组的方法找到数据的位置,这样做效率较低。如果我们能采用二分法的思想,逐步拆分成在很小数组内找解,就能节省很多时间。对于这种方法,只需要使二分法的中间位置指针指向要找的数据,便可得到答案。
二、程序
使用while循环判断是否mid指向要查找的数据,维护low和high的指向即可。三、实现
#include <cstdio> int main() { int n, number; scanf("%d%d", &n, &number); int data[n + 5]; int i; for(i = 0; i < n; i++) { scanf("%d", &data[i]); } int low = 0, high = n, mid = (low + high) / 2; while(data[mid] != number) { if(data[mid] > number) { high = mid + 1; mid = (low + high) / 2; } else if(data[mid] < number) { low = mid + 1; mid = (low + high) / 2; } } printf("%d\n", mid + 1); return 0; }
四、思考
本算法有没有优化空间?参考:斐波那契查找(黄金分割法查找)(仅使用加减实现的二分查找) - 博客频道 - CSDN.NET
相关文章推荐
- 关于查找算法(二分法、hash查找)的理解
- Java查找算法(一): 二分法查找
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 12.java语言基础-查找算法-二分法查找
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 查找算法 - 二分法查找
- 909422229__三种查找算法:顺序查找,二分法查找(折半查找),分块查找
- Java语言基础-查找算法-二分法查找
- 二分法查找(C语言,改进)
- 二分法查找. BinarySearch
- java数组-顺序插入数据及二分法查找数据
- 递归二分法查找
- 查找算法一之顺序查找 二分查找
- 二分法-二分查找的应用及三个经典例题
- 二分法查找数组中的元素并返回其对应的索引
- java 用二分法(递归)实现查找指定元素
- Java算法之二分法查找
- 二分法查找和快速排序