#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; }