重新排列一个数组,使得 arr = i,使用 C++

重新排列一个数组,使得 arr = i,使用 c++

我们有一个正整数类型的数组,假设为arr[],其大小可以任意给定,数组中的元素应该大于0但小于数组的大小。任务是将数组重新排列,使得如果arr[i]等于’i’,则’i’在数组中存在,否则将arr[i]元素设为-1,并打印最终结果。

让我们看一下这个问题的各种输入输出场景:

输入 − int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 }

输出 − 重新排列后的数组为:0 1 2 3 4 5 -1 -1

解释 − 我们有一个大小为8的整数数组,数组中的所有元素都小于8。现在,我们将重新排列数组,即

立即学习“C++免费学习笔记(深入)”;

arr[0] = 0(present in an array)arr[1] = 1(present in an array)arr[2] = 2(present in an array)arr[3] = 3(present in an array)arr[4] = 4(present in an array)arr[5] = 5(present in an array)arr[6] = -1(NOT present in an array)arr[7] = -1(NOT present in an array)

输入− int arr[] = {1, 2, 6, 9, 10}

输出− 重新排列数组,使得arr[i] = i 是:-1 1 2 -1 -1

解释− 我们得到一个大小为 5 的整数数组,并且数组中的所有元素值小于大于 5。现在,我们将重新排列数组,即

arr[0] = -1(NOT present in an array)arr[1] = 1(present in an array)arr[2] = 2(present in an array)arr[3] = -1(NOT present in an array)arr[4] = -1(NOT present in an array)

下面程序中使用的方法如下:

输入一个整数类型的数组,并计算数组的大小。

在排序之前打印数组,并调用函数Rearranging(arr, size)

在函数Rearranging(arr, size)内部

声明一个整数类型变量,假设为ptr

从i到0开始循环,直到i小于size。在循环内部,从j到0开始另一个循环,直到j小于size。

在循环内部,检查如果arr[j] = i,则设置ptr = arr[j],arr[j] = arr[i],arr[i] = ptr并且跳出循环。

从i到size开始循环。在循环内部,检查如果arr[i]!= i,则将arr[i]设置为-1。

在重新排列数组值之后打印数组。

示例

#include using namespace std;void Rearranging(int arr[], int size){   int ptr;   for(int i = 0; i < size; i++){      for(int j = 0; j < size; j++){         if(arr[j] == i){            ptr = arr[j];            arr[j] = arr[i];            arr[i] = ptr;            break;         }      }   }   for(int i = 0; i < size; i++){      if(arr[i] != i){         arr[i] = -1;      }   }}int main(){   int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 };   int size = sizeof(arr) / sizeof(arr[0]);   //calling the function to rearrange an array such that arr[i] = i   Rearranging(arr, size);   //Printing the array   cout<<"Rearrangement of an array such that arr[i] = i is: ";   for(int i = 0; i < size; i++){      cout << arr[i] << " ";   }}

输出

如果我们运行上面的代码,它将生成以下输出

Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1

以上就是重新排列一个数组,使得 arr = i,使用 C++的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
C++程序打印X星型图案
上一篇 2025年12月17日 22:09:13
在C语言中,fork()和exec()之间的区别是什么?
下一篇 2025年12月17日 22:09:31

相关推荐

  • js如何解析URL查询参数 获取URL参数的5种实用方案!

    js如何解析URL查询参数 获取URL参数的5种实用方案!js如何解析URL查询参数 获取URL参数的5种实用方案!js如何解析URL查询参数 获取URL参数的5种实用方案!js如何解析URL查询参数 获取URL参数的5种实用方案!

    解析url查询参数的方法有多种,选择取决于具体需求和环境。1. 使用原生js分割法简单直接,但需处理边界情况;2. urlsearchparams api推荐使用,自动处理编码且代码简洁;3. 利用location.search仅适用于浏览器环境;4. 第三方库如qs、query-string适合处…

    2025年12月20日 用户投稿
    000
  • js如何生成组织结构图 动态组织结构图生成方案

    js如何生成组织结构图 动态组织结构图生成方案js如何生成组织结构图 动态组织结构图生成方案js如何生成组织结构图 动态组织结构图生成方案js如何生成组织结构图 动态组织结构图生成方案

    动态组织结构图的实现主要通过javascript操作dom并结合数据动态渲染节点和连接线,具体步骤如下:1. 准备清晰的json格式数据,描述每个节点的id、名称及父节点id;2. 选择合适的库或框架如orgchart.js或手写代码实现;3. 动态创建dom元素并布局节点;4. 使用svg、can…

    2025年12月20日 用户投稿
    100
  • js中if条件太多如何拆分成函数

    js中if条件太多如何拆分成函数js中if条件太多如何拆分成函数js中if条件太多如何拆分成函数js中if条件太多如何拆分成函数

    拆分if条件提升代码可维护性:1.识别可拆分的独立条件分支;2.为每个分支创建职责单一的判断函数并返回布尔值;3.提取重复代码到独立函数;4.用判断函数简化主逻辑;5.条件复杂时采用策略模式。命名应清晰表达功能,如isuseradmin()。处理依赖关系可通过参数传递依赖函数。单元测试需覆盖各输入情…

    2025年12月20日 用户投稿
    000
  • js如何实现虚拟列表渲染 js虚拟列表性能优化的6个要点

    js如何实现虚拟列表渲染 js虚拟列表性能优化的6个要点js如何实现虚拟列表渲染 js虚拟列表性能优化的6个要点js如何实现虚拟列表渲染 js虚拟列表性能优化的6个要点js如何实现虚拟列表渲染 js虚拟列表性能优化的6个要点

    虚拟列表渲染是一种优化长列表性能的技术,其核心在于仅渲染可视区域内的列表项。1. 监听滚动事件;2. 计算可视区域的起始索引和结束索引;3. 渲染对应索引的列表项;4. 设置占位元素保证滚动条正常显示。为提升性能,可采取以下措施:5. 减少dom操作,复用dom元素;6. 使用requestanim…

    2025年12月20日 用户投稿
    000
  • js框架framework选型_js框架framework对比分析

    js框架framework选型_js框架framework对比分析js框架framework选型_js框架framework对比分析js框架framework选型_js框架framework对比分析js框架framework选型_js框架framework对比分析

    选择js框架需根据项目需求、团队技能、性能要求和社区生态综合判断。1.react适合组件化和函数式编程,灵活性高但需自行配置;2.angular提供完整解决方案,适合长期维护的大型项目,学习曲线陡峭;3.vue上手快、文档清晰,适合中小型项目或快速原型开发;4.svelte、solidjs等新兴框架…

    2025年12月20日 用户投稿
    000
  • js怎样操作WebGL纹理 5种纹理贴图技巧增强3D效果

    js怎样操作WebGL纹理 5种纹理贴图技巧增强3D效果js怎样操作WebGL纹理 5种纹理贴图技巧增强3D效果js怎样操作WebGL纹理 5种纹理贴图技巧增强3D效果js怎样操作WebGL纹理 5种纹理贴图技巧增强3D效果

    webgl纹理操作的核心在于将图像数据上传至gpu以用于3d模型贴图,其流程包括:1. 获取webgl上下文;2. 创建纹理对象;3. 加载图像数据;4. 绑定纹理并设置参数;5. 使用teximage2d将图像数据送入gpu。为避免性能瓶颈,应采用异步加载、纹理压缩及mipmapping技术。we…

    2025年12月20日 用户投稿
    100
  • js怎么操作dom元素样式 js操作dom样式的6个常用方法总结

    js怎么操作dom元素样式 js操作dom样式的6个常用方法总结js怎么操作dom元素样式 js操作dom样式的6个常用方法总结js怎么操作dom元素样式 js操作dom样式的6个常用方法总结js怎么操作dom元素样式 js操作dom样式的6个常用方法总结

    掌握js操作dom元素样式的方法有六种:直接修改style属性;使用setproperty()方法;使用csstext属性;添加或移除css类;切换css类;获取计算样式。此外,处理兼容性问题可使用css预处理器或polyfill库;避免频繁操作dom可通过批量修改、缓存元素、使用css类及requ…

    2025年12月20日 用户投稿
    000
  • js如何实现时序图 动态时序图绘制与交互实现

    js如何实现时序图 动态时序图绘制与交互实现js如何实现时序图 动态时序图绘制与交互实现js如何实现时序图 动态时序图绘制与交互实现js如何实现时序图 动态时序图绘制与交互实现

    javascript实现时序图需选择合适的图表库,如mermaid、jsplumb、vis.js或antv g6,随后进行数据准备与处理,将参与者、消息等信息转换为对应格式,再通过图表库渲染成图形。动态时序图还需实现交互功能,如消息增删、拖拽调整顺序、点击展示详情等,并通过事件监听和重新渲染来响应用…

    2025年12月20日 用户投稿
    000
  • 如何用Clipboard API复制文本?

    如何用Clipboard API复制文本?如何用Clipboard API复制文本?如何用Clipboard API复制文本?如何用Clipboard API复制文本?

    clipboard api 提供了更安全强大的复制功能,其核心方法是 navigator.clipboard.writetext()。1. 使用 writetext() 可以通过异步函数复制纯文本;2. 通过 permissions.query() 检查剪贴板权限状态并处理授权逻辑;3. 使用 wr…

    2025年12月20日 用户投稿
    000
  • js中如何用数组方法替代条件判断

    js中如何用数组方法替代条件判断js中如何用数组方法替代条件判断js中如何用数组方法替代条件判断js中如何用数组方法替代条件判断

    在javascript中,使用数组方法替代条件判断可通过将逻辑转化为查找或筛选操作来简化代码。1. 使用对象字面量通过键值对直接查找,例如用状态码作为键获取对应消息;2. 使用find方法查找符合条件的对象;3. 根据场景选择合适的方法:查找单个元素用find,筛选多个元素用filter,判断存在性…

    2025年12月20日 用户投稿
    100
  • js如何检测陀螺仪传感器 获取陀螺仪数据的3种监听技巧!

    js如何检测陀螺仪传感器 获取陀螺仪数据的3种监听技巧!js如何检测陀螺仪传感器 获取陀螺仪数据的3种监听技巧!js如何检测陀螺仪传感器 获取陀螺仪数据的3种监听技巧!js如何检测陀螺仪传感器 获取陀螺仪数据的3种监听技巧!

    陀螺仪传感器检测与数据获取在js中主要依赖deviceorientation api,但并非所有设备都支持,因此首要任务是检测可用性。1. 可用性检测:通过检查window.deviceorientationevent是否存在进行初步判断,并进一步监听deviceorientation事件以确认实际…

    2025年12月20日 用户投稿
    100
  • JavaScript中如何判断数据类型?

    JavaScript中如何判断数据类型?JavaScript中如何判断数据类型?JavaScript中如何判断数据类型?JavaScript中如何判断数据类型?

    javascript判断数据类型可通过typeof、instanceof、constructor及object.prototype.tostring.call()实现。1. typeof适用于基本类型,但对象、数组、null均返回”object”;2. instanceof通…

    2025年12月20日 用户投稿
    000
  • js如何实现AR效果 WebAR实现方案与技术解析

    js如何实现AR效果 WebAR实现方案与技术解析js如何实现AR效果 WebAR实现方案与技术解析js如何实现AR效果 WebAR实现方案与技术解析js如何实现AR效果 WebAR实现方案与技术解析

    webar是一种无需下载app即可通过浏览器体验ar的技术,它依赖js实现图像识别、追踪和渲染等功能。其核心要素包括图像追踪与识别、3d渲染(如webgl)、设备姿态估计三大技术点。选择框架时,a-frame适合html基础用户,three.js提供更高灵活性,8th wall则适合商业化项目。性能…

    2025年12月20日 用户投稿
    000
  • js如何获取用户地理位置 获取定位信息的4种方法解析!

    js如何获取用户地理位置 获取定位信息的4种方法解析!js如何获取用户地理位置 获取定位信息的4种方法解析!js如何获取用户地理位置 获取定位信息的4种方法解析!js如何获取用户地理位置 获取定位信息的4种方法解析!

    获取用户地理位置在js中最常用的方法是navigator.geolocation api,但需考虑兼容性与用户授权问题;此外还可结合ip定位、wi-fi定位、基站定位等方式提高精度;用户拒绝授权时应提供友好提示和替代方案。具体方法包括:1. 使用navigator.geolocation.getcu…

    2025年12月20日 用户投稿
    100
  • js如何判断变量是否为Symbol Symbol检测的2种方法

    js如何判断变量是否为Symbol Symbol检测的2种方法js如何判断变量是否为Symbol Symbol检测的2种方法js如何判断变量是否为Symbol Symbol检测的2种方法js如何判断变量是否为Symbol Symbol检测的2种方法

    要判断一个 javascript 变量是否为 symbol 类型,主要方法是使用 typeof 操作符和 object.prototype.tostring 方法。1. typeof 操作符通常足够简单有效,它对 symbol 类型返回 “symbol”;2. 而在跨 rea…

    2025年12月20日 用户投稿
    000
  • js中如何用模块化组织条件判断

    js中如何用模块化组织条件判断js中如何用模块化组织条件判断js中如何用模块化组织条件判断js中如何用模块化组织条件判断

    在javascript中,用模块化组织条件判断的关键方法包括1.策略模式;2.函数式编程;3.switch语句或对象字面量;4.决策表。策略模式通过封装每个条件判断为独立策略对象提升灵活性和可维护性;函数式编程将条件判断拆分为独立函数并通过组合方式调用;switch语句或对象字典适用于单一变量多值判…

    2025年12月20日 用户投稿
    100
  • JS如何解析URL哈希参数 3种方法提取并处理锚点参数

    JS如何解析URL哈希参数 3种方法提取并处理锚点参数JS如何解析URL哈希参数 3种方法提取并处理锚点参数JS如何解析URL哈希参数 3种方法提取并处理锚点参数JS如何解析URL哈希参数 3种方法提取并处理锚点参数

    解析url哈希参数的核心在于利用window.location.hash属性获取#后的内容并处理成键值对。1. 使用原生js字符串处理:通过substring(1)去掉#,split(‘&’)和split(‘=’)分割键值对,并用decodeu…

    2025年12月20日 用户投稿
    100
  • js怎样实现3D模型加载 4个关键步骤教你渲染三维对象

    js怎样实现3D模型加载 4个关键步骤教你渲染三维对象js怎样实现3D模型加载 4个关键步骤教你渲染三维对象js怎样实现3D模型加载 4个关键步骤教你渲染三维对象js怎样实现3D模型加载 4个关键步骤教你渲染三维对象

    加载3d模型到javascript应用的关键在于理解模型格式、加载、解析和渲染四个步骤。首先,选择合适的模型格式如obj、gltf或fbx,其中gltf适合web使用;其次,选用three.js或babylon.js等渲染引擎简化开发;接着,通过引擎提供的loader(如objloader、gltf…

    2025年12月20日 用户投稿
    100
  • js怎么解析markdown文本 将Markdown转换为HTML展示

    js怎么解析markdown文本 将Markdown转换为HTML展示js怎么解析markdown文本 将Markdown转换为HTML展示js怎么解析markdown文本 将Markdown转换为HTML展示js怎么解析markdown文本 将Markdown转换为HTML展示

    要使用javascript将markdown解析为html,解决方案是引入markdown解析库如marked、showdown或remarkable。1. 根据需求选择库:追求速度可选marked或remarkable,功能全面可选showdown;2. 引入库后调用解析函数(如marked.pa…

    2025年12月20日 用户投稿
    000
  • js怎样操作WebRTC视频流 WebRTC视频流操作的6个关键步骤

    js怎样操作WebRTC视频流 WebRTC视频流操作的6个关键步骤js怎样操作WebRTC视频流 WebRTC视频流操作的6个关键步骤js怎样操作WebRTC视频流 WebRTC视频流操作的6个关键步骤js怎样操作WebRTC视频流 WebRTC视频流操作的6个关键步骤

    要操作webrtc视频流,需获取、处理并展示视频数据。1. 获取视频流使用getusermedia api请求权限并获取mediastream对象,赋值给video元素播放;2. 使用rtcpeerconnection建立连接传输音视频流,通过addtrack添加轨道,createoffer和cre…

    2025年12月20日 用户投稿
    100

发表回复

登录后才能评论
关注微信