分治法-二分查找

对已排列好的非递减数组进行查找。

(1)非递归算法:

 

#include <iostream>
#include<cstdlib>
using namespace std;

template <typename Type>
int binarySearch(Type a[], const Type &x, int n)
{
    int low = 0;
    int high = n - 1;
    int middle;
    while(low <= high){
        middle = (low + high) / 2;
        if(x == a[middle]) return middle;
        if(x > a[middle]) low = middle + 1;
        else high = middle - 1;
    }
    return -1;
}

int main()
{
    int a[10] = {1, 3, 5, 7, 9, 11, 13,14,20, 30};
    cout<<binarySearch(a, 9, 10)<<endl;
    system("pause");
}
posted on 2012-04-29 13:29  tomctx  阅读(196)  评论(0编辑  收藏  举报