怎样实现一个二分查找的代码?(干货!!!!详细!!!)

待我称王封你为后i 2022-11-21 04:30 286阅读 0赞

在这里插入图片描述

二分查找

二分搜索法是一个经典的例题,很多面试也会用到,可以用来减少对时间的消耗,更加高效的利用起来.

思路:

1.在规定的数组里面寻找出要找的数值对应得下标.
2.每次都从数组的中间开始查找,如果没找见,便删去一半
3.从剩下的一半重新开始进行二分查找,直到找到对应的数为止
4.如果数过大,则输出找不到即可.

题目:编写代码在一个整形有序数组中查找具体的某个数
如下面例题:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(){
  4. int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //定义一个顺序有9个值的数组
  5. int toFind = 9; //所要求的数值
  6. int left = 0; //最左边的下标
  7. int right = sizeof(arr) / sizeof(arr[0]) - 1; //最右边的下标,sizeof来测量数组长度,right为最右侧数组长度
  8. while (left <= right){ //运用循环语句,这个<=表示还有存在的值,如果是>,那就不可能存在值了.都没有长度了.
  9. int mid = (left + right) / 2; //定义一个中间值,每次和要找的值进行比较,二分查找核心
  10. if (toFind < arr[mid]){ //当要找的值比mid小
  11. right = mid - 1; //将区间缩减为mid之前的值,将mid-1的下标赋给right,使区间缩减.
  12. }
  13. else if (toFind>arr[mid]){ //当要找的值比MID大
  14. left = mid + 1; //将mid+1的下标赋给left,使left变大,区间缩减.
  15. }
  16. else{
  17. printf("找到对应元素,下标为:%d\n", mid); //当相等时即为找到所要找的元素,进行印刷
  18. break;
  19. }
  20. }
  21. if (left > right){ //当>时,这个值是不存在的,也不存在这个区间
  22. printf("该元素不存在!\n"); //故输出不存在即可
  23. system("pause");
  24. return 0;
  25. }
  26. }

具体代码的实现方法我已经在后面进行了详细的注释,大家多看看就好了,加油!

发表评论

表情:
评论列表 (有 0 条评论,286人围观)

还没有评论,来说两句吧...

相关阅读