二分检索 BinarySearch

来源:互联网 发布:中学生免费辅导软件 编辑:程序博客网 时间:2024/06/04 22:47
 这是个很神奇的东东.... 找数组里存不存在想要的元素。
#include <stdio.h>#include <stdlib.h>int m;                                          //数组长度为m int n[100];                                     //全局变量 int main(){int BinarySearch(int x);                           int t,i,a;scanf("%d", &m);for (i=0; i<m; i++){scanf("%d", &n[i]);                            //递增序列 ,若不是的话,可以用sort()将之排序}scanf("%d" ,&t);a = BinarySearch(t);                                    //检索对象 比如“8”if(a != -1){printf("%d",BinarySearch(t)+1);}else{printf("Can't find it!\n");}system("pause");return 0;}int BinarySearch(int x)                                //二分检索 {int a,b,mid;                                    //区间(a,b)为端点,mid为中间值 a = 0;                                          //由数组n初始化,a=0 b = m - 1;        //由数组n初始化,b=m-1; while(a <= b)                                    //当区间不为0时循环 ,直到检到a=b {        mid = (a + b)/2;        if (x == n[mid])                            //若正好要检索值等于中间值,返回mid,x=mid; {return mid;}if (x>n[mid])                               //若比中间值大,则区间下界a从mid+1开始 {a = mid+1;}else                                         //若比中间直销,则区间上界b从mid-1开始 {b = mid-1;}}return(-1);                                       //若检索不到,则返回-1,x=-1 }

原创粉丝点击