chenpingjun1990

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 22 文章 :: 5 评论 :: 0 Trackbacks
二分法查找(Binary Search)
适用于查找已排序的序列中是否存在某一特定元素。
使用了函数模板:
//万川先生: 2011.08.21
//BinarySearch--二分查找
#include <iostream>
using namespace std;

template 
<class T>
int binarySearch(T *a, int len, T value)
{
  
int min = 0;
  
int max = len - 1;
  
  
while (min <= max) {
    
int mid = (min + max) / 2;
    
if (a[mid] == value)
      
return mid;
    
else if (a[mid] > value)
      max 
= mid - 1;
    
else
      min 
= mid + 1;
  }
  
return -1;
}

int main(int argc, char* argv[])
{
  
double arr[] = {1.1,5.6,7.7,9.1,11.2,18.2,23.3};
  
double res = binarySearch(arr, 
           
sizeof(arr)/sizeof(*arr), 11.2);

  
if (res == -1) {
    cout 
<< "Element not found!" << endl;
  }
  
else {
    cout 
<< "value is found in array, index is " 
     
<< res << "." << endl;
  }

  
return 0;
}

posted on 2011-08-21 12:52 万川先生 阅读(268) 评论(0)  编辑 收藏 引用 所属分类: Algorithm