二分查找

来源:互联网 发布:新版淘宝怎么充话费 编辑:程序博客网 时间:2024/06/14 07:08

首先在使用二分查找之前必须明确二分查找针对的是有序数组,下面举一个简单的例子(如下图):


程序代码如下:

#include<stdio.h>int binary_search(int arr[],int key,int left,int right){int mid = left + (right - left) / 2;while (left <= right){if (arr[mid] < key){left = mid + 1;}else if (arr[mid]>key){right = mid + 1;}else{return mid;}}return -1;}int main(){int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int key = 7;int sz = sizeof(arr) / sizeof(arr[0]);int ret = binary_search(arr, key, 3,9);if (ret==-1){printf("没找到!\n");}else{printf("%d ",ret);}return 0;}
运行结果:


由此可知,程序运行结果和我们的理论结果一致!