《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生

简介: 《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生

1.gif

目录

(壹)二分查找

📚  1.1  何为二分查找

📚  1.2  二分查找的原理

📚  1.3  查找条件

📚  1.4  代码实现

(贰)猜数字游戏

📚  2.1  菜单初始化

📚  2.2  核心函数

📚  2.3  main函数

📚  2.4  总代码


✨✨ 文章Gitee仓库:CSDN_C游记_玄澈: 《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  二分查找的原理

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

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

📚  1.3  查找条件

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

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

普通查找的时间复杂度为O(N), 二分查找的时间复杂度为O(logN)。

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


📚  1.4  代码实现3.gif



🎨  1.4.1  初始化数据

1.png


 🎨  1.4.2  核心函数2.png4.gif

(贰)猜数字游戏

📚  2.1  菜单初始化3.png


📚  2.2  核心函数4.png


📚  2.3  main函数5.png


📚  2.4  总代码

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

6.gif7.gif

目录
相关文章
另辟蹊径,利用宝塔快速搭建一个VuePress博客
另辟蹊径,利用宝塔快速搭建一个VuePress博客
2056 0
另辟蹊径,利用宝塔快速搭建一个VuePress博客
|
Java Android开发
【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )(一)
【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )(一)
800 0
【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )(一)
|
时序数据库
InfluxData【部署 02】时序数据库 InfluxDB 客户端工具 Influx CLI 最新版本安装启动验证(在线安装+离线安装+各版本下载地址)
InfluxData【部署 02】时序数据库 InfluxDB 客户端工具 Influx CLI 最新版本安装启动验证(在线安装+离线安装+各版本下载地址)
1591 0
|
8月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的民宿客房预订管理系统源码运行
基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
199 8
|
运维 NoSQL 安全
debug学习
debug学习
285 66
|
编解码 人工智能 调度
Meissonic:高效高分辨率文生图重大革新
Meissonic的新模型,仅1b参数可实现高质量图像生成,能在普通电脑上运行,未来有望支持无线端文本到图像的生成。
|
JSON JavaScript 前端开发
js将json字符串还原为json
【6月更文挑战第15天】js将json字符串还原为json
202 4
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
Vue3信息提示(Modal)
这是一个基于 Vue2 的信息提示模态框组件,支持多种弹窗类型(如 info、success、error 等),并提供丰富的自定义属性,包括按钮文本、按钮类型、居中方式等。该组件可根据内容自动调整高度,并兼容不同按钮样式配置。预览效果展示了不同类型的模态框及其样式。代码中详细介绍了组件的实现方式和使用方法。
480 1
Vue3信息提示(Modal)
|
负载均衡 监控 算法
Nginx:负载均衡小专题(二)
Nginx:负载均衡小专题(二)
244 2