您的位置:首页 > 其它

二分查找算法实现

2016-05-29 17:05 274 查看
#include<iostream>
using namespace std;
/*
本段程序,实现的是非递归的实现二分查找算法;
易错点是low和high的重新定位,以及*array是引用关系;
*/
int BinarySearch(int *array, int ArraySize, int key){
if (array == NULL || ArraySize == 0)
return -1;
int low, high, mid=0;
low = 0; high = ArraySize - 1;
while (low <= high){
mid = (low + high) / 2;
if (array[mid] < key)
low = mid + 1;
else if (array[mid] > key)
high = mid - 1;
else
return mid;
}
return -1;
}
int main(){
int n,key, array[100],key_pos;
cout << "输入个数n=" << endl;
cin >> n;
cout << "输入关键字:" << endl;
cin >> key;
cout << "输入要搜索的n个数:" << endl;
for (int i = 0; i < n; i++)
cin >> array[i];
//key_pos = BinarySearch(array, n, key);
cout << "The pos is  " << BinarySearch(array, n, key) << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分查找