编程之美:无差错二分查找
1.虽然二分查找是十分简单的程序,但是因为循环等操作也是最容易出错的,其中在写循环(或者递归)程序的时候,应该特别注意三个方面的问题:初始条件、转化、终止条件。
2.二分查找源码
int biseach(char** arr, int b, int e, char* v) { int minIndex = b, maxIndex = e, midIndex; while(minIndex < maxIndex - 1) //若改为minIndex < maxIndex时,容易出现死循环 { //eg:minIndex=2 maxIndex=3时就进入死循环 midIndex = minIndex + (maxIndex - minIndex) / 2; //若midIndex =(minIndex + maxIndex)/2,在上溢的时候,会导致midIndex. if(strcmp(arr[midIndex], v) <= 0) { minIndex = midIndex; } else { maxIndex = midIndex; } } //退出循环时:若minIndex为偶数则minIndex==maxIndex,
//否则就是minIndex == maxIndex - 1 if(!strcmp(arr[maxIndex], v)) { return maxIndex; } else if(!strcmp(arr[minIndex], v)) { return minIndex; } else { return -1; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步