您的位置:首页 > 其它

二分查找_递归版_while版

2015-03-27 17:10 197 查看
#include <stdio.h>

int binary_search(const
int arr[],int low,
int high,int key);

int main(int argc,
char **argv)

{

    

    int arr[] = {4,8,20,30,50,60};

    

    int len = sizeof(arr) /
sizeof *arr;  //
求数组长度

    int key;

    printf("请输入一个数字:");

    scanf("%d",&key);

    printf("\n");

    

    int low = 0;

    int high = len -
1;

  

    int pos = binary_search(arr,low,high,key);  

    printf ("pos = %d\n",pos);    

    return
0;

}

int binary_search(const
int arr[],int low,
int high,int key)

{

    int mind = low + (high - low)/2;  
// 记录中间
角标

    

    while (low <= high) {

        

        if (key == arr[mind]) {

            

            return mind;

            

        }

        else if(key > arr[mind]){

            

            low = mind + 1;

            mind = low + (high - low)/2;

            

        }

        else if(key < arr[mind]){

            

            high = mind - 1;

            mind = low + (high - low)/2;

            
        }
if(low>high){        

            return -1;     

        }

        

    }

    

    return -1;

       

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: