二分查找如何用在编译器中实现

img

img

Position BirnarySearch(List L,ElementType X)
{
    int low = 0;
    int high = L->Last - 1;
    int mid ;
    while(low <= high){
        mid = (low + high) / 2;
        //右边查找
        if (X> L.Data[mid]) {
            low = mid + 1;
        //左边查找
        }else if (X< L.Data[mid]) {
            high = mid - 1;
        }else{
            return mid;
        }
    }
    return  -1;
}


#include "stdio.h"
void main()
{

    int a[10]={1,2,3,4,5,8,10,110,120,1000};
    int left,right,mid;
    int num,cnt=0;
    printf("请输入你要查找的数据:");
    scanf("%d",&num);
    left = 0;
    right= 9;
    while(left<=right){
        //计算查找次数
        cnt++;
        //获取中间位置元素的下标
        mid = (left+right)/2;
        if(num>a[mid]){
            //往右找
            left=mid+1;
        }else if(num<a[mid]){
            //往左找
            right=mid-1;
        }else{
            //找到了
            printf("在第%d个位置找到了数据,共查找%d次\n",mid+1,cnt);
            break;
        }
    };
    if(left>right){
        printf("你要查找的数据不存在\n");    
    }
}