C语音在数组中找数字

时间:2020-08-06 17:01:01   收藏:0   阅读:84
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int k = 0; int dgs = sizeof(arr) / sizeof(arr[0]); //元素个数=总元素数量/单个元素 int left = 0; //左下标 int right = dgs - 1; printf("输入一个数:\n"); scanf("%d", &k); while (right >= left) { int mid = (left + right) / 2; if (arr[mid] > k) //假如k=4 arr[mid]得到6>4[6的底数为5],说明4在中间值mid的左边.并且六不等于四 //所以排除六这个中间值,也就是得到right=mid-1;减去mid这个中间值 { right = mid - 1; //左边元素=中间值-1.即[这个mid前面没有arr,所以他是个底数] //5-1=4,所以得到此数在底数0-4之间,然后进行下一次循环 } else if (arr[mid] < k) //假如k=7 arr[mid]得到6<7[6的底数为5],说明7在中间值mid的右边.并且六不等于七 //所以排除六这个中间值,也就是得到right=mid+1;这边也是减去mid这个中间值 { left = mid + 1; } else { printf("你找到了,底数是%d\n", mid); break; } } if (left > right) { printf("没有找到对应的数\n"); } return 0; }
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!