二分查詢演算法實現
阿新 • • 發佈:2018-12-30
#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;
}