#include<iostream> using namespace std; //二分查找法,查找一个数组的元素,并返回所在的位置的下标, //必须要是一个有序的数组, int select_arr(int arr[], int len, int arr_value) { while (1) { int left = 0; //数组的左侧下标 int right = len-1; //数组的右侧下标 while (left <= right) { int mid = (left + right) / 2; //定义中间位的下标 int mid_value = arr[mid]; //定义中间值的基准值 if (mid_value == arr_value) //如果基准值正好等于要查找的值,则自动返回要找的位置 { return mid; } //如果基准值大于要查找的值,表明值在左半边,新的查找范围为中间值-1位,也就是mid-1 else if (mid_value > arr_value) { right = mid - 1; } //如果基准值小于要查找的值,表明值在右半边,新的查找范围为中间数+1位,也就是mid+1; else if (mid_value < arr_value) { left = mid + 1; } } return -1; } } int main() { //定义一个int数组,并使用二分查找元素 int arr[10] = { 1, 3, 5, 7, 9, 10, 16, 46, 88, 91 }; int weizhi=select_arr(arr, 10, 16); return 0; }
原文链接: https://www.cnblogs.com/shenji/p/12695102.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/341739
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!