您的位置:首页 > 其它

二分查找 数组和指针方法

2008-12-27 15:41 357 查看
/*************二分查找之数组版本******************

参数说明:

int* t :  待查找数组的指针

int  n :  该数组的大小

int  x : 需要查找的数据

返回值说明:

NULL   : 没有找到

其他   : 返回找到对应数据位置

备注:

查找前提是待查找的数据是已经排好序

**************************************************/

int* BinSearch(int* t, int n, int x)

{

      int low = 0;

      int hig = n;

      while (low < hig)

      {

          int mid = (hig + low)/2;

          if (x < t[mid])

        {

             hig = mid;

        }

        else if

        {

              low = mid + 1;

        }

        else

        {

               return t+mid;

        }

      }

      return NULL;

}

/****************指针版本****************/

int* BinSearch(int* t, int n, int x)

{

      int* low = t;

      int* hig = t + n;

      while (low < hig)

      {

          int* mid = low + ((hig - low)>>1); 

          if (x < *mid)

        {

             hig = mid;

        }

        else if

        {

              low = mid + 1;

        }

        else

        {

               return mid;

        }

      }

      return NULL;

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