如下:
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int arr[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; // 0 1 2 3 4 5 6 7 8 9 10 11 int k = 8; // 取 数组 arr 中的一个数字 8 赋值给k ==> k=8 int sizelenth = sizeof(arr) / sizeof(arr[0]); // sizeof(arr): 是计算arr数组的长度 长度 = 12 // sizeof(arr[0]): 是计算arr[0]的长度 长度 = 1 // sizeof(arr)/sizeof(arr[0]) ==> 12/1=12 // 把12赋值给 sizelenth ==> sizelenth=12 int left = 0; // 从数组下标左面开始 数组的第一个数 即 arr[left]==arr[0]==1 int right = sizelenth - 1;// 从数组下标的右面开始 数组的最后一个数 即 arr[right]==arr[11]==12 while (left<=right) // 定义while()循环 不知道要循环多少次 所以要用while循环 { int mid = (left + right)/ 2; if (arr[mid] k) { right = mid - 1; } else { printf("下标为:%dn", mid); break; } } }



