关闭

折半法查找

148人阅读 评论(0) 收藏 举报
分类:


#include <stdio.h>

/* 

 return 要查找的数的位置,如果查找不到返回-1

 */

int  zheban(int a[],int len,int key){

    //定义变量

    int low=0;

    int mid;

    int high=len-1;

    //循环

    while (low<=high){

    

    //计算mid位置

        mid=(low+high)/2;

    //判断key  a[mid]

        if(key>a[mid]){

             //key>a[mid]   low =mid+1

            low =mid+1;

        }else if (key<a[mid]){

            //key<a[mid]   high=mid-1

            high=mid-1;

        }else{

            //key==a[mid]   return mid;

            return mid;

        }

        }

    return -1;

}

//插入数据

int  insert(int a[],int len,int key){

    //定义变量

    int low=0;

    int mid;

    int high=len-1;

    //循环

    while (low<=high){

        

        //计算mid位置

        mid=(low+high)/2;

        //判断key  a[mid]

        if(key>a[mid]){

            //key>a[mid]   low =mid+1

            low =mid+1;

        }else if (key<a[mid]){

            //key<a[mid]   high=mid-1

            high=mid-1;

        }else{

            //key==a[mid]   return mid;

            return mid+1;

        }

    }

    return low;

}



int main(int argc, const char * argv[]) {

    int a[]={2,5,6,8,9,23,45,47,78,88};

    //查找6的位置

    int loc=zheban(a, 10, 45);

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

    //要插入元素的位置

    int ins=insert(a, 10, 45);

    printf("ins=%d",ins);

    return 0;

}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3536次
    • 积分:226
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档