C语言二分法查找法则
1.二分法查询原理
例子:在 1 ,-1,55,32,-8中找到32
(1).确定中间值与左右边界的值(下标)
(2).查找的数与中间比较,如果中间值大于要查找的数则往左边查询,反之右边)
(3).判断没有查找到的情况:如果扫描到左边界的元素个数大于右边边界的元素个数,则表示没有找到
2.代码实现
#include <stdio.h> int dichotomySearch(int arr[],int liftIndex,int rightIndex,int num){ int midval=(rightIndex+liftIndex)/2;//计算中间值的下标 if(liftIndex > rightIndex){//判断是否越界,越界则查询不到 return -1; } if(arr[midval] > num){//左半边查询 dichotomySearch(arr,liftIndex,midval-1,num); return 1; } else if(arr[midval] < num){//右半边查询 dichotomySearch(arr,midval+1,rightIndex,num); return 1; } else{//查询的值等于中间下标的值 return 1; } } int main(){ int arr[]={11,34,89,77,99,-10,100}; int len=sizeof(arr)/sizeof(int);//计算数组个数 int liftIndex=len-1;//有边界个数 int findVal=dichotomySearch(arr,0,liftIndex,-100);//二分法查询函数 if(findVal==1){//判断是否查询到数值 printf("fingding! "); } else{ printf("no find "); } return 0; }
3.运行结果
查询-100:
查询77:
下一篇:
贪心算法例题:2850商人小鑫