7-4 交换最小值和最大值

分数 15
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
输入样例:
5
8 2 5 1 4
输出样例:
1 2 5 4 8
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
我的答案:
分析过程:
- 读取整数序列,并同时找到最小值及其位置,以及最大值及其位置。
- 将最小值与第一个整数交换。
- 将最大值与最后一个整数交换。
- 输出交换后的序列。
需要注意的是,如果最小值就是在序列的最后一个位置或者最大值就是在序列的第一个位置,交换的顺序就变得很重要了,因为先进行的交换可能会影响到后面的交换。
在我们执行交换操作时,要特别小心关于最大值和最小值的位置。如果我们先执行了一个交换,那么它可能会影响到我们后续的交换操作。
让我们以一个例子来解释:
假设我们有一个序列:8 2 5 1 4。
最大值为8,位置为0(即第一个位置);最小值为1,位置为3(即第四个位置)。
按照题目要求,我们首先要将最小值与第一个数字交换,然后再将最大值与最后一个数字交换。
如果我们按照这个顺序执行,那么:
- 首先交换最小值1和第一个数字8,序列变为:
1 2 5 8 4。 - 接下来,我们再交换最大值8和最后一个数字4,序列变为:
1 2 5 4 8。
这是正确的结果。
但如果最大值是序列的第一个数字,而最小值是序列的最后一个数字,比如序列:8 2 5 4 1。按照上述交换顺序,我们会得到错误的结果,因为在我们交换最小值和第一个数字后,原来的最大值的位置已经改变,我们就不能再正确地交换最大值和最后一个数字了。
C语言:
#include <stdio.h>int main() {int N, i;int arr[10];int minIndex = 0, maxIndex = 0;// 读取数据scanf("%d", &N);for (i = 0; i < N; i++) {scanf("%d", &arr[i]);if (arr[i] < arr[minIndex]) {minIndex = i;}if (arr[i] > arr[maxIndex]) {maxIndex = i;}}// 交换最小值和第一个数int temp = arr[0];arr[0] = arr[minIndex];arr[minIndex] = temp;// 如果最大值就是第一个数,那么maxIndex需要更新if (maxIndex == 0) {maxIndex = minIndex;}// 交换最大值和最后一个数temp = arr[N-1];arr[N-1] = arr[maxIndex];arr[maxIndex] = temp;// 输出结果for (i = 0; i < N; i++) {printf("%d ", arr[i]);}return 0;
}
C++:
#include <iostream>
#include <vector>
using namespace std;int main() {int N;cin >> N;vector<int> arr(N);int minIndex = 0, maxIndex = 0;for (int i = 0; i < N; i++) {cin >> arr[i];if (arr[i] < arr[minIndex]) {minIndex = i;}if (arr[i] > arr[maxIndex]) {maxIndex = i;}}swap(arr[0], arr[minIndex]);// 如果最大值就是第一个数,那么maxIndex需要更新if (maxIndex == 0) {maxIndex = minIndex;}swap(arr[N-1], arr[maxIndex]);for (int i = 0; i < N; i++) {cout << arr[i] << " ";}return 0;
}
解题过程:
- 读取N。
- 创建一个数组或向量来存储整数序列。
- 在读取整数时,找到最小和最大值及其位置。
- 进行必要的交换。
- 输出交换后的整数序列。
总结:
从这道题目中,我们可以学到以下几点:
1. **问题分析**:在解决问题之前,需要仔细阅读和理解题目要求,以确保你考虑到了所有可能的情况。
2. **边界条件的重要性**:在计算机科学中,边界条件常常是出现错误的地方。这道题目强调了如果最小值或最大值位于序列的开始或结束位置,交换的顺序会产生影响。这就是一个边界条件的例子。
3. **数组操作**:这道题目强调了对数组元素的访问和修改。你需要熟悉如何在数组中找到最大值和最小值,以及如何交换数组中的两个元素。
4. **考虑交换顺序的重要性**:在执行多个交换操作时,执行顺序可能会影响最终结果,因此在编程时要特别注意。
5. **细心和注意力**:程序中的小错误(如错误地交换两个数字)可能会导致完全不同的结果。因此,编写代码时要非常细心,并在测试代码时要尽量考虑各种可能的情况。
6. **调试和测试**:在实际编程中,很可能你的第一版代码不能正确处理所有情况。这就强调了进行充分测试的重要性,特别是对于那些可能的边界条件。
综上所述,这道题目不仅测试了编程技能,还强调了计算思维、逻辑分析和问题解决的重要性。
相关文章:
7-4 交换最小值和最大值
分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。…...
解决Pycharm的Settings中Project不见了也无法选择Python Interpreter的方法
目录 一、问题如下二、解决方法 一、问题如下 突然打开项目没有python解释器,也无法重新配置python Interpreter,而且整个文件夹是黄色高亮的形式,如下显示,而且重新安装了pycharm也没用甚至说打开File–>Setting–>Projec…...
AWS EKS 集群自动扩容 Cluster Autoscaler
文章目录 一,需求工作需求说明 二,部署精简命令执行1,要求2,查看EC2 Auto Scaling groups Tag3,创建Serviceaccount需要的Policy,Role4,部署Cluster Autoscaler5,验证6,常…...
excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列
学习excel前需要明确的是事: 在学习excel函数之前,大家需要明确一件事,excel现在设计到了一些新函数,这些新函数只能存在于office365、office2019及更 新版本之中,所以建议大家在学习时安装较新的版本,…...
工控行业需要熟悉的工业级通信协议
1. Modbus RTU Modbus RTU 是一种串行通信协议,常用于工控行业。它具有以下特点和优势: 采用二进制编码,数据传输更加高效。支持多种传输介质,如RS-232、RS-485等。容易实现和使用,适用于各种设备。具备强大的错误检…...
力扣题解(1030. 距离顺序排列矩阵单元格),带注释
题目描述 链接:点我 注意:多看几遍题目,开始没看懂…相当于计算矩阵网格里面的点(不要计算边界) 我开了题解才明白题的意思 orz… 题解 class Solution {public int[][] allCellsDistOrder(int rows, int cols, int rCenter, …...
每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)
今日份题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例1 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu…...
利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)
利用POM完成脚本分离实现企业级自动化(POM设计模式页面的框架封装测试报告截图) 项目-测试-手工测试 项目-测试-手工测试 1.了解需求; 2.编写测试用例(开始)——功能测试组会去做的事情 3.执行测试用例——发送测试报…...
嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化
前言 (1)在嵌入式程序设计中,我们常常会要对各类传感器进行数据存储。大多时候的传感器,例如红外光传感器,返回的数据要么是0,要么是1。因此,只需要一bit就能够存储。而很多人却常常使用char型数…...
day53 第九章 动态规划part14● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
1143. 最长公共子序列 class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length();int n text2.length();int[][] dp new int[m 1][n 1];for (int i 1; i < m; i) {for (int j 1; j < n; j) {if (text1.charAt(i …...
shell编程 基础
将content.txt文件中的内容输出到控制台上 将content.txt中有tom的行输出到控制台 将$2文件中含有gree的行输出到控制台 case语法 简易计算器 查找有root的行 查找以root开头的行 查询时忽略大小写 grep -E 则适用于复杂的正则表达式,可以使用多项选择、重复和子表达…...
人工智能在网络安全中的应用: 分析人工智能、机器学习和深度学习等技术在预测、检测和应对网络攻击中的作用
第一章:引言 随着信息技术的迅猛发展,网络安全已成为当今社会不容忽视的重要议题。网络攻击手法日益复杂,传统的防御方法已经不再足够。在这一背景下,人工智能(AI)技术正逐渐崭露头角,为网络安…...
使用 Redis 实现异步队列
使用 Redis 实现异步队列 一、简介1 异步队列2 异步队列与同步队列 二、Redis 实现异步队列1 利用 Redis 的 List 数据类型实现异步队列2 利用 Redis 的 Pub/Sub 功能实现异步队列3 利用 Redis 的 Sorted Set 数据类型实现延迟队列 三、Redis 异步队列的实际应用场景4.1 异步任…...
RocketMQ、Dashboard部署以及安全设置
RocketMQ、dashboard部署以及安全设置 一、启动RocketMQ1.1 下载RocketMQ1.2 修改配置文件1.2.1 修改nameServer Jvm内存配置1.2.2 修改broker参数 1.3 启动1.3.1 启动NameServer1.3.2 启动Broker1.3.3 测试是否启动成功1.3.3.1 测试消息发送1.3.3.2 测试消息接收1.3.3.3 Java程…...
Android AlarmManager设置闹钟
官网镇楼:设置重复闹铃时间 闹钟具有以下特征: 它们可让您按设定的时间和/或间隔触发 intent。您可以将它们与广播接收器结合使用,以启动服务以及执行其他操作。它们在应用外部运行,因此即使应用未运行,或设备本身处…...
【C# 基础精讲】LINQ to XML查询
LINQ to XML 是 C# 中用于查询和操作 XML 数据的强大工具。它允许您使用 LINQ 查询语法对 XML 文档进行查询、过滤、投影等操作,从而更加方便地处理 XML 数据。本文将详细介绍 LINQ to XML 的基本概念、常见操作以及示例,帮助您了解如何在 C# 中使用 LIN…...
Java学习笔记——(20)标识符命名规则和规范
什么叫标识符 Java 对各种变量、方法和类等命名时使用的字符序列成为标识符凡是自己可以起名字的地方都叫标识符 标识符的命名规则(必须遵守) 由26个英文字母大小写,0-9,_ 或 $ 组成数字不可以开头不可以使用关键字和保留字Jav…...
过滤字符,绕过
构造不包含字母和数字的webshell <?phpecho "A"^""; ?>运行结果为! 代码中对字符"A"和字符”"进行了异或操作。在PHP中,两个变量进行异或时,先会将字符串转换成ASCII值,再将ASCII值转换成二进制…...
Apache Doris 入门教程32:物化视图
物化视图 物化视图是将预先计算(根据定义好的 SELECT 语句)好的数据集,存储在 Doris 中的一个特殊的表。 物化视图的出现主要是为了满足用户,既能对原始明细数据的任意维度分析,也能快速的对固定维度进行分析查询。 …...
PHP substr()函数详解,PHP截取字符串。
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 substr 一、截取字符串二、截取中文字符串三、leng…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
