查找算法――二分查找

匿名 (未验证) 提交于 2019-12-03 00:38:01

一、C 程序实现

/******************************************************************************************* *Description 二分查找算法 *Author liaoxiongxiong *Version 1.0 *Time 2018-04-28 *******************************************************************************************/  #include <stdio.h>  //二分查找,版本1 int BinarySearch1(int a[], int value, int n) {     int low, high, mid;     low = 0;     high = n-1;     while(low<=high)     {         mid = (low+high)/2;         if(a[mid] == value)             return mid;         if(a[mid]>value)             high = mid-1;         if(a[mid]<value)             low = mid+1;     }     return -1; }  //二分查找,版本2,递归版本 int BinarySearch2(int a[], int value, int low, int high) {     int mid = low+(high-low)/2;     if(a[mid]==value)         return mid;     if(a[mid]>value)         return BinarySearch2(a, value, low, mid-1);     if(a[mid]<value)         return BinarySearch2(a, value, mid+1, high); }  //测试用例 int main() {     int a[]={0,1,2,3,4,5,6,7,8,9};     int len = sizeof(a)/sizeof(a[0]);      int x=2;   // 需要查找的元素      int i = BinarySearch2(a, x, 0, len);     if(i!=-1)         printf("元素 %d 在第 %d 个位置\n",x,i+1);     else         printf("没有找到元素:%d\n",x);      return 0; } 

运行结果:

原文:https://www.cnblogs.com/shujuxiong/p/9240082.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!