小膝盖的博客

ios初学者,为ios开发而奋斗

折半法查找


#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;

}


阅读更多
个人分类: c
上一篇选择法排序
下一篇迷宫游戏(二维数组的应用)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭