#include "stdio.h"
int binarySearch(int arr[], int leftIndex, int rightIndex,int findNum) {
//找到中间值的坐标
int midIndex = (leftIndex + rightIndex) / 2;
//在被递归调用时,左坐标(leftIndex)大于右坐标(rightIndex),说明没有这个值
if(leftIndex > rightIndex){
return -1;
}
if (arr[midIndex] > findNum){//如果中间的值(midIndex)比要找的值大,就往左递归查找
binarySearch(arr, leftIndex, midIndex - 1, findNum);
}else if (arr[midIndex] < findNum){//如果中间的值(midIndex)比要找的值小,就往右递归查找
binarySearch(arr, midIndex + 1, rightIndex, findNum);
}else{
return midIndex;//找到了就返回
}
}
void main() {
int arr[] = {1,2,3,4,5,6};
size_t i = sizeof(arr) / sizeof(arr[0]);
int search = binarySearch(arr, 0, i - 1, 4);
printf("%d",search);//3
}
二分查找(C语言)
最新推荐文章于 2023-12-12 08:30:00 发布