二分查找BinarySearch 15 Feb 2014 | algorithm 二分查找[最好 O(1) 平均O(logn) 最坏O(logn)] #include <stdio.h> int binSearch(int array[], int n, int key) { int low = 0, high = n - 1; while(low <= high){ int middle = (low + high) / 2; if(array[middle] == key) return middle; else array[middle] > key ? high = middle - 1 : low = middle + 1; } return -1; } int binSearchRecurse(int array[], int low, int high, int key) { if(low <= high) { int middle = (low + high) / 2; if(array[middle] == key) return middle; else if(array[middle] > key) return binSearchRecurse(array, low, middle - 1, key); else return binSearchRecurse(array, middle + 1, high, key); } return -1; } int main() { int a[] = {1,4,6,8,9,10}; //int result = binSearchRecurse(a, 0, 5, 6); int result = binSearch(a, 6, 6); printf("%d\n", result); }