#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
时间: 2024-10-05 09:54:28