今天,给大家分享一下如何用二分法查找数字的下标。
下面,我分享出来。
这一步,先创建一个数组,定义一个变量,输入想要查找的数,后面就是求这个数组中元素的个数。
数组最左边的下标与最右边的下标。
直接上代码吧
#define _CRT_SECURE_NO_WARNINGS 1 #includeint main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//定义一个数组 int n = 0; scanf("%d", &n); int sz = sizeof(arr) / sizeof(arr[0]);//计算数组长度 //数组名就是首元素地址 //有两个例外 //1. sizeof (数组名),这里的数组名表示整个数组,sizeof (数组名)计算的是整个数组的大小 //2. &数组名,这里的数组名表示整个数组,取出的是数组的地址 int left = 0;//数组最左边数下标 int right = sz - 1;//数组最右边数下标 while (left <= right) { int mid = (left + right) / 2;//求中间数下标 if (arr[mid] > n) { right = mid - 1;//中间数在n右边,查找范围变为最左边的数和中间数前一个数之间 } else if (arr[mid] < n) { left = mid + 1;//中间数在n左边,查找范围变为中间数后一个数与最右边的数之间 } else { printf("找到了,下标是:%dn", mid); break; } } if (left>right) { printf("找不到下标n"); } return 0; }
希望对你有帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)