二分查找 数组和指针方法

  1. /*************二分查找之数组版本******************
  2. 参数说明:
  3. int* t :  待查找数组的指针
  4. int  n :  该数组的大小
  5. int  x : 需要查找的数据
  6. 返回值说明:
  7. NULL   : 没有找到
  8. 其他   : 返回找到对应数据位置
  9. 备注:
  10. 查找前提是待查找的数据是已经排好序
  11. **************************************************/
  12. int* BinSearch(int* t, int n, int x)
  13. {
  14.       int low = 0;
  15.       int hig = n;
  16.       while (low < hig)
  17.       {
  18.           int mid = (hig + low)/2;
  19.           if (x < t[mid])
  20.         {
  21.              hig = mid;
  22.         }
  23.         else if
  24.         {
  25.               low = mid + 1;
  26.         }
  27.         else
  28.         {
  29.                return t+mid;
  30.         }
  31.       }
  32.       return NULL;
  33. }
  34. /****************指针版本****************/
  35. int* BinSearch(int* t, int n, int x)
  36. {
  37.       int* low = t;
  38.       int* hig = t + n;
  39.       while (low < hig)
  40.       {
  41.           int* mid = low + ((hig - low)>>1); 
  42.           if (x < *mid)
  43.         {
  44.              hig = mid;
  45.         }
  46.         else if
  47.         {
  48.               low = mid + 1;
  49.         }
  50.         else
  51.         {
  52.                return mid;
  53.         }
  54.       }
  55.       return NULL;
  56. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值