温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言如何使用二分查找实现猜数游戏

发布时间:2022-02-09 11:22:50 来源:亿速云 阅读:161 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关C语言如何使用二分查找实现猜数游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    (壹)二分查找

     1.1  何为二分查找

    折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。

    例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半查找算法查找数据之前,需要首先对该表中的数据按照所查的关键字进行排序:{5,13,19,21,37,56,64,75,80,88,92}。

     1.2  二分查找的原理

    以升序数列为例,比较一个元素与数列中的中间位置的元素的大小,如果比中间位置的元素大,则继续在后半部分的数列中进行二分查找;如果比中间位置的元素小,则在数列的前半部分进行比较;如果相等,则找到了元素的位置。每次比较的数列长度都会是之前数列的一半,直到找到相等元素的位置或者最终没有找到要找的元素。

    动图演示:(于顺序查找相比较)

    C语言如何使用二分查找实现猜数游戏

    ???? 二分查找的前提条件是有序数列,普通查找则不需要。

    查找到返回该元素的下标,否则返回-1。

    普通查找的时间复杂度为O(N), 二分查找的时间复杂度为O(logN)。 N/2/2···/2=1,2^m=N(m为折半查找的次数),那么m=log(N),二分查找的时间复杂度就为O(logN)。

      1.4  代码实现

    C语言如何使用二分查找实现猜数游戏

    1.4.1  初始化数据

    C语言如何使用二分查找实现猜数游戏

    1.4.2  核心函数

    C语言如何使用二分查找实现猜数游戏

    C语言如何使用二分查找实现猜数游戏

    (贰)猜数字游戏 

     2.1  菜单初始化

    C语言如何使用二分查找实现猜数游戏

      2.2  核心函数

    C语言如何使用二分查找实现猜数游戏

     2.3  main函数

    C语言如何使用二分查找实现猜数游戏

     2.4  总代码

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    void menu()
    {
    	printf("**********************************\n");
    	printf("*********** 1.play     ***********\n");
    	printf("*********** 0.exit     ***********\n");
    	printf("**********************************\n");
    }
     
    //RAND_MAX--rand函数能返回随机数的最大值。
    void game()
    {
    	int random_num = rand() % 100 + 1;
    	int input = 0;
    	while (1)
    	{
    		printf("请输入猜的数字>:");
    		scanf("%d", &input);
    		if (input > random_num)
    		{
    			printf("猜大了\n");
    		}
    		else if (input < random_num)
    		{
    			printf("猜小了\n");
    		}
    		else
    		{
    			printf("恭喜你,猜对了\n"); break;
    		}
    	}
    }
     
    int main()
    {
    	int input = 0;
    	srand((unsigned)time(NULL));
    	do
    	{
    		menu();
    		printf("请选择>:");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:
    			game();
    			break;
    		case 0:
    			break;
    		default:
    			printf("选择错误,请重新输入!\n");
    			break;
    		}
    	} while (input);
    	return 0;
    }

    感谢各位的阅读!关于“C语言如何使用二分查找实现猜数游戏”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI