常用算法- 二分查找

来源:互联网 发布:英语口语句型 知乎 编辑:程序博客网 时间:2024/04/30 14:35

 对分查找

问题描叙:
对分查找:
    给定一个整数x和整数A0,A1,…An-1,后者已经预先排序并在内存中,求使得
Ai=X的下标i,如果X不在数据中,则返回i = -1:

#include <iostream>

using namespace std;

template <class T>
int BinarySertch(T a[], int n, T x)
{
 int begin, end, mid;

 begin = 0; end = n - 1;

 

 while(begin <= end)
 {
  mid = (begin + end) / 2;

  if(x > a[mid])
   begin =mid + 1;

  else if(x < a[mid])
   end = mid - 1;
  
  else
   return mid;
 }

 return -1;
}

int main()
{
 int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

 int n = sizeof(a)/ sizeof(int);

 int result = BinarySertch<int>(a, n, 2);

 cout << "the index of 2 is: " << result << endl;

 system("pause");

 return 0;
}

原创粉丝点击