C语言怎么通过二分查找实现猜数字游戏


本文小编为大家详细介绍“C语言怎么通过二分查找实现猜数字游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么通过二分查找实现猜数字游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题目: 在一个有序数组中查找具体的某个数字n。首先我们先定义一个1到10的数组 ,如果7为我们要查找的数字,编写代码如下但是这个代码的效率比较低,需要循环多次,所以我们需要用一个效率较高的方法:二分查找又叫 (折半查找)给你一个有序的序列,取中间元素和目标元素进行对比,取其中的一半,丢弃另一半,快速缩小目标元素所在的位置。主要思想还是:快速缩小目标元素所在的区间。1.序列必须是有序的,升序或者降序都可以2. 序列必须是顺序存储元素的,顺序存储元素主要是可以快速的获取中间元素(可以通过下标来找到元素)分析:假设我们要找的数字为7,在查找过程中要用下标进行查找,此时我们定义左下标为left,右下标为right,中间元素下标为mid,(left+right)/2=mid。当第一次查找没有找到时,从中间下标向左或向右缩短查找范围继续查找,直到找到为止。以数字7为例:第一次查找(left+right)/2=(0+9)/2=4,下标为4找到的数字为5,此时并没有找到;第二次查找,因为数字5小于数字7,所以mid+1=left,right不变,向右查找,此时(left+right)/2=(5+9)/2=7,下标为7,找到的数字为8,并没有找到;第三次查找,因为数字8大于数字7,所以mid-1=right,左下标不变,向左查找,此时(left+right)/2=(5+6)/2=5,下标为5,找到的数字为6,第四次查找,因为6小于7,所以向右查找,(left+right)/2=(6+6)/2=6,下标为6,找到的数字为7。如果left是一个很大的数,right也是一个很大的数,left+right超出整形能表达的最大值,数据溢出,此时(left+right)/2所求的就不是最大值了这时要怎么办呢?我们让多出的部分除以二在平分,如图所示代码修改1.电脑生成一个1~100的的随机数2.猜数字猜大了 就告诉你:猜大了猜小了 就告诉你:猜小了猜对了 就告诉你:恭喜你,猜对了首先要打印一个菜单,选择开始游戏还是退出游戏其次,游戏应该可以玩完一局之后玩一局,为循环进行,利用循环语句构建框架打印菜单打印结果打印主函数此时游戏过于简单,选择1要开始游戏,所以我们定义一个游戏函数game()打印游戏函数游戏第一步:生成随机数rand()函数为生成随机数函数,头文件为rand会返回一个0~327637之间的数使用rand()要搭配srand() 一起使用,srand()是设置随机数生成器,一般用时间戳作为时间的种子,所以使用time函数来获取时间,然后将time函数转换为(unsigned)类型在传给srand函数游戏效果演示读到这里,这篇“C语言怎么通过二分查找实现猜数字游戏”文章已免费云主机域名经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: JavaScript如何实现数值的动态变化

这篇“JavaScript如何实现数值的动态变化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript如何实现数值的动态变化”文章吧…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/28 20:58
下一篇 02/28 21:11

相关推荐