网站建设网站规划书,网站标签页在哪里设置,界面设计分析,做网站 需要什么商标前言#xff1a;
作业和那个不是一个级别的
内容#xff1a;
3.在一个有序数组中查找具体的某个数字n。(讲解二分查找)
下标就是数组的下标#xff0c;从0开始#xff0c;有点难度#xff0c;我头有点晕#xff0c;就是大概知道了#xff0c;写代码也写不出来的那种…前言
作业和那个不是一个级别的
内容
3.在一个有序数组中查找具体的某个数字n。(讲解二分查找)
下标就是数组的下标从0开始有点难度我头有点晕就是大概知道了写代码也写不出来的那种等我晚上在写
先看下问题代码这已经是我边看边写的代码了还出错误了
#include stdio.h
int main()
{int arr[] {1,2,3,4,5,6,7,8,9,10};int left 0;int sz sizeof(arr)/sizeof(arr[0]);int right sz -1;int k 7;while(left right){int mid (left right)/2; if(arr[mid] k){left mid 1; }else if(arr[mid] k){right mid -1; }else{printf(找到了下标为:%d\n, mid);}}return 0;}
正确的值
#include stdio.h int main() { int arr[] {1,2,3,4,5,6,7,8,9,10}; int left 0; int sz sizeof(arr)/sizeof(arr[0]); //计算元素个数 int right sz -1; //计算右边的下标 int k 7; //随机选择一个数找出在数组是哪个下标 while(left right) //循环遍历找出下标 { int mid (left right)/2; //每次都需要重新计算因为每次的left或right都会变 if(arr[mid] k) //如果下标的值大于实际值则右边偏移 { right mid - 1; } else if(arr[mid] k) { left mid 1; } else { printf(找到了下标为:%d\n, mid); break; //找到值需要跳出循环不然mid值不变会一直循环 } } return 0; }