/* 数组元素的类型 */
typedef int elem_t;
/**
* @brief 有序顺序表的折半查找算法.
*
*@param[in] a 存放数组元素的数组,已排好序
*@param[in] n 数组的元素个数
*@param[in] x 要查找的元素
*return 查找成功则返回元素的下标,否则返回-1
*/
int binary_search(const elem_t a[], const int n, const elem_t x){
int left = 0, right = n - 1, mid;
while (left <= right){
mid = left + (right - left) / 2;
if (x > a[mid]){
left = mid + 1;
}
else if (x < a[mid]){
right = mid - 1;
}
else{
return mid;
}
}
return -1;
}
算法的时间复杂度为 o(log2(n))