1. 程式人生 > >二分查詢演算法實現

二分查詢演算法實現

#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; }