折半查找又称二分查找,Binary Search,这是一个多么简单而又常见的算法啊! 是的,君不见,网上流传的此算法的代码(无论是何种语言),大多是有Bug的,通常是第1个或最后1个搜索不到 这里帖一个正确而又简洁易懂的C实现 int binary_Search(int* p, int x, int iLen) { int index = -1; int minIndex = 0; int maxIndex = iLen - 1; int curIndex = (minIndex + maxIndex) >> 1; while( minIndex <= maxIndex ) { if( x == p[curIndex] ) { index = curIndex; break; } else if ( x < p[curIndex] ) { maxIndex = curIndex - 1; } else { minIndex = curIndex + 1; } curIndex = (minIndex + maxIndex) >> 1; } return index; }