【C++】C++应用案例-翻转数组

        翻转数组,就是要把数组中元素的顺序全部反过来。比如一个数组{1,2,3,4,5,6,7,8},翻转之后就是{8,7,6,5,4,3,2,1}。

  • (1)另外创建数组,反向填入元素

数组是将元素按照顺序依次存放的,长度固定。所以如果想要让数组“翻转”,一种简单的思路是:直接创建一个相同长度的新数组,然后遍历所有元素,从末尾开始依次反向填入就可以了。

#include<iostream>
using namespace std;int main()
{const int n = 8;int arr[n] = { 1,2,3,4,5,6,7,8 };// 1. 直接创建一个新数组,遍历元素反向填入int newArr[n];for (int i = 0; i < n; i++){newArr[n-i-1] = arr[i];}	// 打印数组for (int i = 0; i < n; i++){cout << newArr[i] << "\t";}cout << endl;}

需要注意原数组下标为i的元素,对应翻转后的新数组下标为n-i-1(n为数组长度)。

  • (2)基于原数组翻转

另建数组的方式很容易实现,但有明显的缺点:需要额外创建一个数组,占用更多的内存。最好的方式是,不要另开空间,就在原数组上调整位置。

这种思路的核心在于:我们应该有两个类似“指针”的东西,每次找到头尾两个元素,将它们调换位置;而后指针分别向中间逼近,再找两个元素对调。由于数组中下标是确定的,因此可以直接用下标代替“指针”。

#include<iostream>
using namespace std;int main()
{const int n = 8;int arr[n] = { 1,2,3,4,5,6,7,8 };// 2. 双指针分别指向数组头尾,元素对调int head = 0, tail = n - 1;	while(head < tail){int temp = arr[head]; arr[head] = arr[tail];arr[tail] = temp;// 指针向中间移动++head;--tail;}// 打印数组for (int i = 0; i < n; i++){cout << arr[i] << "\t";}cout << endl;}

结果输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python——Pandas(第二讲)

文章目录 变量类型的转换Pandas 支持的数据类型在不同数据类型间转换 建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列 引用和修改索引引用索引修改索引修改索引名修改索引值 更新索引 Series的索引和切片DataFrame的索引和切片选择列按行列索…

基因组挖掘指导天然药物分子的发现-文献精读34

基因组挖掘指导天然药物分子的发现 摘要 天然产物是临床药物的主要来源&#xff0c;也是新药研发过程中先导化合物结构设计和优化的灵感源泉。但传统策略天然药源分子的发现却遭遇了瓶颈&#xff0c;新颖天然产物的数量逐渐无法满足现代药物开发的需求和应对全球多药耐药的威胁…

【每日刷题】Day86

【每日刷题】Day86 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 2. 数组中出现次数超过一半的数字_牛客题霸…

Java之 jvm

jvm之管理内存 程序计数器&#xff1a;当前线程所执行的字节码的行号指示器。程序计数器是唯一一个不会出现 OutOfMemoryError 的内存区域&#xff0c;它的生命周期随着线程的创建而创建&#xff0c;随着线程的结束而死亡。Java虚拟机栈 方法调用 一个方法调用都会有对应的栈帧…

概率论三大分布

目录 基本概念 卡方分布&#xff08;χ分布&#xff09;&#xff1a; t分布&#xff1a; F分布&#xff1a; 延伸 卡方分布在哪些具体情况下最适合用于数据分析&#xff1f; t分布在大样本情况下的表现与正态分布相比如何&#xff1f; F分布在进行方差比较时与t分布的区…

加速下载,揭秘Internet Download Manager2024下载器的威力!

1. Internet Download Manager&#xff08;IDM&#xff09;是一款广受欢迎的下载管理软件&#xff0c;以其强大的下载加速功能和用户友好的界面著称。 IDM马丁正版下载如下: https://wm.makeding.com/iclk/?zoneid34275 idm最新绿色版一键安装包链接&#xff1a;抓紧保存以…

ISP 代理提供商:互联网安全的关键参与者

简介&#xff1a;互联网安全的演变态势 互联网改变了我们互动、工作和开展业务的方式&#xff0c;但也带来了与安全性和可访问性相关的重大挑战。在这个数字时代&#xff0c;互联网服务提供商 (ISP) 代理提供商在解决这些问题方面发挥着关键作用。他们提供的基本服务不仅可以增…

网络安全常见错误及解决办法(更新中)

# 开启代理&#xff0c;无法连接网络 把代理关掉 # 上一秒还在安装tree&#xff0c;下一秒xshell就连接不上了 —》sshd服务的key这个文件权限过高&#xff0c;跟装tree没有关系&#xff0c;装一个epel 源&#xff0c;epel-release​ 部分命令&#xff1a;chmod 600 /etc/ssh…

google、windows自带语音识别中英文等实时字幕使用

2、自带实时字幕 1&#xff09;google浏览器自带 实时字幕 设置里可以设置&#xff1a; 有视频声音播放会弹出黑色文本框 下载其他语言包-比如中文&#xff1a; 测试 2&#xff09;windows11 辅助功能 实时字幕 &#xff08;直接快捷键打开&#xff1a;Win Ctrl L&#…

C# 实现条件变量

C# 进程通信系列 第一章 共享内存 第二章 条件变量&#xff08;本章&#xff09; 第三章 消息队列 文章目录 C# 进程通信系列前言一、关键实现1、用到的主要对象2、初始化区分创建和打开3、变量放到共享内存4、等待和释放逻辑 二、完整代码三、使用示例1、线程同步控制2、进程…

ROS配置并同时驱动多个UVC相机(含功能包)

配置并同时驱动多个UVC相机&#xff0c;并将数据保存为ROS话题形式的bag文件。 ROS可以同时驱动多个UVC相机。要实现这个目标并将数据保存成ROS话题的形式&#xff0c;再保存为bag文件&#xff0c;可以按照以下步骤操作&#xff1a; 1. 安装必要的包 sudo apt-get update sud…

MySQL零散拾遗(四)--- 使用聚合函数时需要注意的点点滴滴

聚合函数 聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。 常见的聚合函数&#xff1a;SUM()、MAX()、MIN()、AVG()、COUNT() 对COUNT()聚合函数的更深一层理解 COUNT函数的作用&#xff1a;计算指定字段在查询结果中出现的个数&#xff08;不包含NULL值&#…

ElMessage自动引入,样式缺失和ts esline 报错问题解决

一. 环境 "unplugin-auto-import": "^0.17.6", "vue": "^3.3.8", "vite": "^5.0.0", "typescript": "^5.2.2",二. ElMessage样式缺失问题. 以下有两种解决方法 方法一: 配置了自动引用后…

TypeScript-Omit/Pick

文章目录 Omit 的词源词源分析词源历史 在 TypeScript 中的用法示例 Pick语法示例更复杂的示例使用 Pick 和其他类型组合实际应用场景 Omit vs Pick Omit 的词源 Omit 是一个英语词汇&#xff0c;它的意思是“省略”或“遗漏”。现在让我们来看看这个词的词源。 词源分析 O-…

从应答到解决:深度剖析电话客服热线系统的核心功能与价值

一、引言 在当今这个信息时代&#xff0c;客户服务的质量直接关系到企业的生存和发展。电话客服热线系统作为企业与客户之间沟通的桥梁&#xff0c;发挥着至关重要的作用。 1.电话客服热线系统的重要性 电话客服热线系统是企业与客户之间最直接、最有效的沟通渠道之一。它不…

Oracle集群RAC磁盘管理命令asmcmd的使用

文章目录 ASM磁盘共享简介ASM磁盘共享的优势ASM磁盘组成ASM磁盘共享的应用场景Asmcmd简介Asmcmd的功能Asmcmd的命令Asmcmd的使用注意事项Asmcmd运行模式交互模式运行非交互模式运行ASMCMD命令分类实例管理命令:文件管理命令:磁盘组管理命令:模板管理命令:文件访问管理命令:…

Python文献调研(一)环境搭建

一、安装Python版本 1.点击进入Python官网 Download Python | Python.org 2.根据自己的需求选择python的版本&#xff0c;点击【Download】 3.自定义安装路径&#xff0c;记得勾选Add Python xxx to PATH 这步是自动配置环境变量的&#xff0c;如果忘记勾选&#xff0c;建议…

VirtualBox 安装Centos 7 避坑指南 SSH连不上 镜像失效 静态网络配置等

背景 几乎每次安装Centos 7 时&#xff0c;都会遇到各种各样的问题&#xff0c;毕竟每次安装动辄就是半年几年&#xff0c;几乎都是在换工作时&#xff0c;有了新机器才会倒腾一次&#xff0c;时间久远&#xff0c;就会忘记一些细节&#xff0c;这次整理一下&#xff0c;避免以…

如何定位线上OOM

造成OOM的原因 1一次性申请太多对象。如&#xff1a;从数据库获取大量数据。 解决方法&#xff1a;更改申请对象的数量。如&#xff1a;做个分页。 2内存资源使用完未释放。如&#xff1a;太多线程建立数据库连接而未释放。 解决方法&#xff1a;使用线程池。 3本身资源不够…

Android笔试面试题AI答之线程Handler、Thread(2)

答案仅供参考&#xff0c;来自 讯飞星火大模型 目录 1.Android多线程间通信和多进程之间通信有什么不同&#xff0c;分别怎么实现?2.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系&#xff1f;3.Android 线程间通信有哪几种方式?4.子线程发消息…