C语言--输入10个数字,要求输出其中值最大的元素和该数字是第几个数

今天小编带大家了解一下什么是“打擂台”算法。
一.思路分析
可以定义一个数组arr,长度为10,用来存放10个数字,设计一个函数Max,用来求两个数中的较大值, 定义一个临时变量tmp=arr[0],保存临时最大的值,下标是index,然后进行两两比较,如果下一个数组元素比临时最大值大,那么就把tmp换成新的数值。并记录下它的下标,最后剩下来的临时最大值就是整个数组中的临时最大值。
二.打擂台算法(了解即可)
背景:拳击比赛中,先选出一个擂主,然后挑战者来挑战,如果成功 ,那么挑战者成为新的擂主,否则擂主捍卫成功,当所有挑战者都挑战完成后,那么最后的那个擂主就是最强的。
同样的,本题中,先让arr[0]成为擂主,然后依次让arr[1],arr[2]...arr[10],进行比较大小,如果arr[0]<arr[1],那么擂主让给arr[1],即tmp=arr[1],并保存下它的下标1。依次类推,直到选到最大的数字。
.打擂台算法(Tournament algorithm),也被称为淘汰赛算法,是一种用于解决最值问题的算法。它通过将问题的输入从不同的角度进行两两比较,从而找到最大值或最小值。
下面以找出数组中的最大值为例来解释打擂台算法:
1. 将待比较的元素按照一定的规则进行分组。例如,将数组中的元素两两分组进行比较,如果数组个数为奇数,则最后一个元素被单独分组。
2. 在每个分组中进行比较,并记录每组的胜者。比较的方式可以是简单的大小比较,或者根据特定的条件进行比较。
3. 将每个分组的胜者再次组成新的分组,继续进行两两比较,直到只剩下一个胜者。
4. 最后,剩下的那个胜者就是数组中的最大值。
这个算法的特点是通过不断地比较和淘汰,逐渐缩小了待比较的范围,最终找到了最大值(或最小值)。
打擂台算法的时间复杂度为O(log n),其中n是输入元素的个数。它的效率非常高,尤其适用于需要找到最值的场景,如数组中的最大值、最小值等。
需要注意的是,打擂台算法通常需要满足比较的元素具有传递性,即如果元素A比元素B大,元素B比元素C大,则元素A必定比元素C大。否则,算法可能得不到正确的结果。
三.图解

四.代码分析
- 定义出最大值函数
int Max(int a, int b)
{return a > b ? a : b;
}
- 定义出数组,并从键盘获取10个数字
int arr[10] = { 0 };printf("请输入10个数字\n");int len = sizeof(arr) / sizeof(arr[0]);for (int i = 0;i < len;i++){printf("请输入第%d个数字 :", i + 1);scanf("%d", &arr[i]);}
- 定义出“擂主”,并进行比赛,并保存新的擂主信息
int tmp = arr[0];//临时最大值int index = 0;//保存临时最大值的下标for (int i = 1;i < len;i++){if (Max(arr[i], tmp) > tmp){tmp = arr[i];//把当前最大值赋给临时最大值index = i;//保存临时最大值的下标}}
- 输出
printf("最大值是%d,是第%d个数字", tmp, index + 1);
五.完整代码
int Max(int a, int b)
{return a > b ? a : b;
}
int main()
{int arr[10] = { 0 };printf("请输入10个数字\n");int len = sizeof(arr) / sizeof(arr[0]);for (int i = 0;i < len;i++){printf("请输入第%d个数字 :", i + 1);scanf("%d", &arr[i]);}int tmp = arr[0];//临时最大值int index = 0;//保存临时最大值的下标for (int i = 1;i < len;i++){if (Max(arr[i], tmp) > tmp){tmp = arr[i];//把当前最大值赋给临时最大值index = i;//保存临时最大值的下标}}printf("最大值是%d,是第%d个数字", tmp, index + 1);return 0;
}
六.运行结果

创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐
相关文章:
C语言--输入10个数字,要求输出其中值最大的元素和该数字是第几个数
今天小编带大家了解一下什么是“打擂台”算法。 一.思路分析 可以定义一个数组arr,长度为10,用来存放10个数字,设计一个函数Max,用来求两个数中的较大值, 定义一个临时变量tmparr[0],保存临时最大的值,下标…...
如何做好功能测试,提升测试质量和效率?
要做好功能测试并提升测试质量和效率,可以考虑以下几个方面: 1. 明确测试目标和需求 在开始功能测试之前,首先要明确测试的目标和需求,包括测试的范围、重点、预期结果等。这有助于为测试工作提供清晰的方向和指导。 2. 制定详细…...
高德地图添加信息弹窗,信息弹窗是单独的组件
//弹窗组件 <template><el-card class"box-card" ref"boxCard" v-if"showCard"><div slot"header" class"clearfix"><div class"title">{{ model.pointName }}</div><div class…...
Apache Arrow优点
优点 采用连续的内存布局,在单机计算的时候,对操作系统友好,增加了缓存命中率以及读取数据的效率采用列式存储,在单机计算的时候,可以利用SMID向量化处理,并且增加了查询效率(一般查询的时候只…...
【Linux权限:系统中的数字锁与安全之门】
1.Linux下的用户 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令…...
笔记本电脑的麦克风没有声音
笔记本电脑的麦克风没有声音是一个常见的问题,可能是由于以下几个原因导致的: 第一,麦克风没有启用或者被禁用了。在Windows系统中,右键单击任务栏上的音量图标,选择“录音设备”,在弹出窗口中找到麦克风&a…...
20道简单的投资数学逻辑
20道简单的投资数学逻辑 (非常好,强烈推荐,其中第3、第11的案例太经典了,是我反复给金融研究生讲授分析的案例) 1、关于收益率 假如你有100万,收益100%后资产达到200万,如果接下来亏损50%&am…...
【Spring】事务实现原理
在使用事务的时候需要添加EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事…...
人工智能基础_机器学习024_梯度下降进阶_L1正则可视化图形---人工智能工作笔记0064
然后我们就来用代码实现一下L1正则的可视化,我们来看看 首先导入 import numpy as np 数学计算 import matplotlib.pyplot as plt 画图用的 然后我们把L1正则的公式写出来 可以看到L1的正则 其实就是w1和w2的绝对值相加对吧 然后这里我们写一个公式: f(x,y) = |x|+|y| …...
媒体聚焦丨四维图新旗下杰发科技王璐:设计决定芯片质量
编者按:新四化、软件定义汽车使汽车芯片成为了最新的半导体增长极,催生了汽车芯片的数量呈倍速增长,汽车芯片功能越来越复杂,迭代速度也越来越快。汽车芯片厂商从最初的设计开始,就要按照车规级芯片的要求对芯片进行全…...
动态规划基础篇(LeetCode每日一题计划)
爬楼梯 求所有爬楼梯的方案 方法一:f(x)f(x-1)f(x-2) class Solution {public int climbStairs(int n) {int p0,q0,r1;for(int i0;i<n;i){pq;qr;rpq;}return r;} } 方法二:动态规划 class Solution { public:int climbStairs(int n) {int dp[46]…...
智慧商业:探索分布式云技术为企业创造商业价值,减少成本,提升生产力的秘诀!
我们可以试想一下,如果没有云计算,商业将会是什么样子? 对于这个问题的答案,许多人会认为它可能依旧是一个以实体为主行业。 云计算和多云战略的出现为在线购物带来了革命性的变化。 然而,如今多云所固有的复杂性仍然…...
Anaconda安装gdal
安装gdal 安装gdal,真是一波三折哇。pip、conda、c编译了等等,网上各种大佬的解决方法都试了试。咱就是说,都不行,很扯淡。甚至 使用conda install gdal 都显示安装成功了,但是 from osgeo import gdal; i…...
vite基础学习笔记:14.路由跳转(二)携带query参数
说明:自学做的笔记和记录,如有错误请指正 1. 路由跳转(携带query参数) (1)第一层路由(点击卡片路由跳转至新页面-携带query参数) 知识点: query传参对应的是path和qu…...
立体相机标定
相机成像过程中涉及的4个坐标系: 1、世界坐标系:由用户定义的三维世界坐标系,描述物体和相机在真实世界中的位置,原点可以任意选择。 2、相机坐标系:以相机的光心为坐标原点,X轴和Y轴平行于图像坐标系的X轴…...
mixin混合类的接口实现
mixin混合类的接口实现 应用 :CreateModelMixin,ListModelMixin,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin 简化工程代码。 from rest_framework.generics import GenericAPIView from rest_framework.mixins import CreateModelMixin,ListModelMixi…...
前端小技巧: TS实现EventBus自定义事件
关于EventBus事件总线 事件总线,实现 on, once, emit, off on, once 是注册函数,存储起来emit时找到对应的函数,执行off找到对应的函数,从对象中删除 注意 区分on和onceon绑定的事件可连续执行,除非offonce绑定的函数…...
Django之三板斧的使用,全局配置文件介绍,request对象方法,pycharm链接数据库,Django链接数据库,ORM的增删改查
【1】三板斧(3个方法)的使用 Httpresponse() 括号内写什么字符串,返回的就是什么字符串返回的是字符串 render(request, 静态文件 ) request是固定的静态文件是写在templates文件夹里面的,如,HTML文件 redirect( 重定向的地址 ) 重…...
医学影像系统源码(MRI、CT三维重建)
一、MRI概述 核磁共振成像(英语:Nuclear Magnetic Resonance Imaging,简称NMRI),又称自旋成像(英语:spin imaging),也称磁共振成像(Magnetic Resonance Imag…...
【uniapp】仿微信通讯录列表实现
效果图 代码实现 <view class"main-container"><!-- 成员列表 --><scroll-viewclass"member-list":style"computedHeight":scroll-y"true":enable-back-to-top"true":scroll-with-animation"true"…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
