实现二分查找
来源:互联网 发布:linux的w命令 编辑:程序博客网 时间:2024/06/02 21:14
所谓的二分查找就是用目标值先和有序数组中中间元素进行比较,如果目标值小于有序数组元素中间值,就接着访问左边数组元素,和左边数组中间元素比较;如果目标值大于有序数组元素中间值,就接着访问右边数组元素,和右边数组中间元素比较……
二分查找代码如下:
#include <stdio.h> int Binary_key(int arr[], int key, int left, int right) { int mid = 0; while (left <= right) { mid = left + ((right - left) >> 1); if (key < arr[mid]) { right = mid - 1; } else if (key > arr[mid]) { left = mid + 1; } else { return mid; } } return -1; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; int key = 3; int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; int tmp = Binary_key(arr, key, 1, 8); if (tmp == -1) { printf("没找到\n"); } else { printf("已找到\n"); } }
上述mid的求法等价于mid=left+((right-left)/2),之所以不用传统的(left+right)/2是为了防止溢出;
sizeof(arr)/sizeof(arr[0])求数组的长度;
while(left<=right),left必须是小于等于right,否则判断条件不全面。
阅读全文
0 0
- Java实现 二分查找
- 二分查找递归实现
- 正确实现二分查找
- Python实现二分查找
- 二分查找实现
- 二分查找实现
- 二分查找实现
- Java实现二分查找
- 二分查找实现
- java实现二分查找
- java实现二分查找
- 二分查找的实现
- Java二分查找实现
- c++实现二分查找
- 二分查找(实现)
- java 实现二分查找
- 二分查找法实现
- 二分查找的实现
- ViewPager的 setOffscreenPageLimit(0) 方法
- 如何在Android中使用Realm数据库
- 【笔记】Java 文档注释
- 如何提升产品经理的会议沟通效率?
- poj3461 KMP模板 或 哈希
- 实现二分查找
- I
- 同余定理 应用于大整数取模
- 对象和类
- 关于ElasticSearch 5.X分词器的问题
- iOS-禁用TextField的粘贴、拷贝等功能
- J
- kaggle比赛之路(一) —— 新手注册账号并fork一个notebook
- poj3974 manacher模板