二分查找

来源:互联网 发布:淘宝龙腾国际名品真假 编辑:程序博客网 时间:2024/06/05 15:58
        二分查找又叫折半查找,优点是比较次数少,查找速度快,平均性能好;缺点为要求待查表为有序表,且插入删除删除困难。因此,折半查找适用于不经常变动而查找频繁的有序列表。二分查找的实现原理是: 先假设表中元素是按升序排列,将表中间位置的关键字与需要查找的目标关键字进行比较,如果相等,则查找成功;否则,利用中间位置的关键字将表分成前,后两个子表,如果中间位置的关键字比目标关键字小,则进一步查找下一个后-子表,反之查找-子表。重复上述过程,直到找到满足条件的关键字,使查找成功,如果直到子表都不存在,则查找不成功。


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

int binary_search(int arr[], int key, int sz)
{
   int left = 0;
   int right = sz - 1;
  while (left <= right)
  {
    int mid = left + ((right - left) >> 1);//直接加起来除以2,可能会由于数据过大,溢出。>>1位的效率比除以2的高
    If (arr[mid] < key)
      {
        left = mid + 1;
      }
   else if (arr[mid]>key)
     {
        right = mid - 1;
     }
  else
    {
      return mid;
    }
  }
 return -1;
}
int main()
{
   int arr[10] = {1,2,3,4,5,6,7,8,9,10};
   int key = 7;
   int sz = (sizeof arr) / (sizeof(arr[0]));
   int ret = binary_search (arr, key, sz);
 if (ret == -1)
   {
     printf("没有找到\n");
   }
 else
   {
     printf("%d\n",ret);
  }
 system("pause");
 return 0;
}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机保存的图片变模糊怎么办 微信视频保存到手机变模糊怎么办 自己的位置被别人取代了怎么办 给工厂做半成品老板跑了怎么办 微信变成英文再恢复汉字怎么办 cad中标注尺寸数字太小怎么办 扣扣的钱包手势密码忘记了怎么办 台式电脑带符号的数字打不出怎么办 情侣之间出现看见对方就烦怎么办 电信卡号和联通卡号怎么办情侣号 电脑能登qq但打不开网页怎么办 想跟朋友聊天但对方不理怎么办 刚进婆家门被婆婆欺负怎么办 支付宝的聊天记录被删了怎么办 彩票站买彩票把钱付了没出票怎么办 与异性朋友聊天没话题了怎么办 快递写错地址但已经发货了怎么办 快递写错电话但已经发货了怎么办 微信添加好友功能被限制怎么办 qq号被冻结了限制解封怎么办 被别人强制拉入qq群怎么办 qq群里的图片过期了怎么办 q附近人不能关注不能发信息怎么办 qq畅聊之火掉了怎么办 打印机打印时上面空白留太多怎么办 发短信一直空格里面写0怎么办 网贷获取我新手机号通讯录怎么办 系统音频驱动异常或未安装怎么办 附近功能已屏蔽你的qq好友怎么办 新申请的qq号忘了怎么办 刚申请的qq号忘了怎么办 以前申请的qq号忘了怎么办 小孩玩手机游戏扣费了怎么办 手机qq好友头像显示不出来怎么办 qq的一些重要数据被清理怎么办 华为p9微信听筒声音小怎么办 win10我的电脑图标没了怎么办 小米5x里的微信头像不清楚怎么办 微信头像换了总是模糊怎么办 找到老公暧昧对象的微信怎么办 朋友欠我钱一直拖找借口怎么办