题目:在一个顺序数组中查找一个数的位置,此方法方便快捷。
实现过程中主要遇到的问题有:
1、定义变量right没按sz-1定义,导致变量与数组无关;
2、mid变量未用arr标榜,导致无效,应该为arr[mid];
3、int mid变量定义定义在while外面,导致变量无法变化。
#define _CRT_SECURE_NO_WARNINGS 1 #include//二分查找法 int main() { //定义数组、数组下标、要查找的数字 int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int k = 9;//要查找的数 int sz = sizeof(arr) / sizeof(arr[0]);//数组元素的个数 int left = 0; int right = sz-1; //算法实现 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("找到了,下标是:%dn",mid); break; } } if(left > right) { printf("找不到!"); } return 0; }
定义的要查找的数为9,执行结果:



