算法——二分查找

打印 上一主题 下一主题

主题 556|帖子 556|积分 1668

一、算法原理

二分查找是一种在有序数组中查找特定元素的算法。它的基本思想是通过比较数组中心元素和目的值的大小关系,来确定目的值在数组的哪一部门,然后不停缩小查找范围直到找到目的值大概确定目的值不存在为止。
注:查找数组必须是有序数组
二、算法实现流程



 三、代码示例

  1. int binary_search(int *arr,int size,int target)
  2. {
  3.     int low = 0;                    /*定义最低下标为记录首位*/
  4.     int high = size - 1;            /*定义最高下标为记录末位*/
  5.     while(low <= high)
  6.     {
  7.         int mid = (low + high) / 2;   /*折半*/
  8.         if(arr[mid] == target)        /*若相等,这说明mid为查找到的位置*/
  9.         {
  10.             return mid;
  11.         }
  12.         else if(arr[mid] > target)  /*若查找值比中值小,最高位下标调整到中位下标小一位*/
  13.         {
  14.             high = mid - 1;
  15.         }
  16.         else{                       /*若查找值比中值大,最低位下标调整到中位下标大一位*/
  17.             low = mid + 1;
  18.         }
  19.     }
  20.     return -1;              /*如果上述循环结束后,没有找到指定值,返回-1*/
  21. }
  22. int main()
  23. {
  24.     int arr[] = {1,10,20,25,36,41,50,56,60};
  25.     int size = sizeof(arr) / sizeof(int);
  26.     int ret = binary_search(arr,size,56);
  27.     printf("ret === %d\n",ret);
  28.     return 0;
  29. }
复制代码
运行结果:找到56的下标为7



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表