Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146479
  • 博文数量: 28
  • 博客积分: 1646
  • 博客等级: 上尉
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-12 14:28
文章分类

全部博文(28)

文章存档

2013年(28)

我的朋友

分类: C/C++

2013-03-14 11:38:10


二分查找:又称折半查找。
基本思想:前提条件是待查找集合有序,首先将待查值与中间元素比较,若相等,则找到;若小于中间元素,则后续查找在左半区间查找,否则在右半区间查找。
需要连续存储,时间复杂度是O(logn).


点击(此处)折叠或打开

  1. int binary_search(int a[], int size, int value)
  2. {
  3.     int i, j, mid;

  4.     i = 0;
  5.     j = size;

  6.     while (i <= j){ /* take care i==j */
  7.         mid = (i+j) / 2;
  8.         if (value == a[mid]){
  9.             return mid; /* found */
  10.         }
  11.         if (value < a[mid]){ /* left */
  12.             j = mid - 1;
  13.         } else if (value > a[mid]){ /* right */
  14.             i = mid + 1;
  15.         }
  16.     }
  17.     return -1; /* not found */
  18. }


阅读(1214) | 评论(0) | 转发(0) |
0

上一篇:选择排序

下一篇:设计包含min函数的栈

给主人留下些什么吧!~~