1.什么是二分查找?
二分查找也叫折半查找,就是在一段有序的数组中查找某个元素。
2.二分查找的逻辑
原理很简单,每次拿目标数值(用k表示)与数组中间位置的数据(用arr[mid]表示,mid表示数组中间位置索引值)进行比较,如果k大于arr[mid],那么左下标left=mid+1,继续将k与大于arr[mid]部分的中间位置的值进行比较;如果k小于arr[mid],那么右下标right=mid-1,继续将k与小于arr[mid]部分的中间位置值进行比较。
intmain() { inta[] = { 1,2,3,4,5,6,7,8,9,10 }; intsz=sizeof(a) /sizeof(a[0]);//计算数组中元素的个数intleft=0;//左下标intright=sz-1;//右下标intk=7;//要查找的元素while (left<=right) { intmid= (left+right) /2;//求数组中间下标if (a[mid] <k) { left=mid+1; } elseif (a[mid] >k) { right=mid-1; } else { printf("找到了,下标是:%d\n", mid); break; } } if (left>right) printf("找不到\n"); return0; }