码迷,mamicode.com
首页 > 编程语言 > 详细

C语音在数组中找数字

时间:2020-08-06 17:01:01      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:数组   scan   break   循环   define   code   排除   fine   amp   

#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; }

C语音在数组中找数字

标签:数组   scan   break   循环   define   code   排除   fine   amp   

原文地址:https://blog.51cto.com/14893161/2517524

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!