二分查找 (经典例题)

二分查找

二分搜索法是一个经典的例题,很多面试也会用到,可以用来减少对时间的消耗,更加高效的利用起来.二分搜索就是在规定的数组里面寻找出要找的数值对应得下标.对于二分查找的理解就是每次都从数组的中间开始查找,如果没找见,便删去一般,从剩下的一半重新开始进行二分查找,直到找到对应的数为止.如果数过大,则输出找不到即可.
题目:编写代码在一个整形有序数组中查找具体的某个数
如下面例题:

#include<stdio.h>
#include<stdlib.h>
int main(){
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };      //定义一个顺序有9个值的数组
	int toFind = 9;                                 //所要求的数值
	int left = 0;                                   //最左边的下标
	int right = sizeof(arr) / sizeof(arr[0]) - 1;   //最右边的下标,sizeof来测量数组长度,right为最右侧数组长度
	while (left <= right){                          //运用循环语句,这个<=表示还有存在的值,如果是>,那就不可能存在值了.都没有长度了.

		int mid = (left + right) / 2;               //定义一个中间值,每次和要找的值进行比较,二分查找核心
		if (toFind < arr[mid]){                     //当要找的值比mid小

			right = mid - 1;                        //将区间缩减为mid之前的值,将mid-1的下标赋给right,使区间缩减.
		}
		else if (toFind>arr[mid]){                  //当要找的值比MID大

			left = mid + 1;                         //将mid+1的下标赋给left,使left变大,区间缩减.
		}
		else{

			printf("找到对应元素,下标为:%d\n", mid);  //当相等时即为找到所要找的元素,进行印刷
			break;
		}
	}
	if (left > right){                              //当>时,这个值是不存在的,也不存在这个区间

		printf("该元素不存在!\n");                    //故输出不存在即可
		system("pause");
		return 0;
	}
}

我觉得我已经解释的很到位了,只要一步步去仔细的看,细品,就能学会.最终还是要多敲代码…

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页