二分法查找

#include<stdio.h>//二分查找binary search
int main()
{
    //定义数组
    int array[]={0,5,13,19,22,41,55,68,72,81,98};
    int targetNumber,isFound=0;    //要查找的数字,查找结果。
    int i,index;//存放找到的数字的下标
    int low,high,mid;    //标识搜索区间的3个指针
    int arrLength = sizeof(array)/sizeof(array[0]);   //获得数组长度
    printf("请输入在以下数组中要查找的数字:\n");
    for(i=0;i<arrLength;i++)
    {
        printf("%d ",array[i]);
    }
    scanf("%d",&targetNumber);
    low=0;
    high=arrLength-1;
index=-1;
while(low<=high) { mid=(high+low)/2; if(array[mid]==targetNumber) { isFound=1;index=mid+1;break; } else if(array[mid]<targetNumber) { low=mid+1; } else if(array[mid]>targetNumber) { high=mid-1; } } if(isFound==0) printf("没有找到数字%d。\n",targetNumber); else printf("找到了,%d是第%d个数字\n",targetNumber,index); return 0; }

 

posted @ 2017-10-30 19:02  ss14457  阅读(146)  评论(0编辑  收藏  举报