shell脚本5数组

文章目录

  • 数组
    • 1 数组定义方法
    • 2 获取数组长度
      • 2.1 读取数组值
      • 2.2 数组切片
      • 2.3 数组替换
      • 2.4 数组删除
      • 2.5 追加数组元素
    • 3 实验
      • 3.1 冒泡法
      • 3.2 直接选择法
      • 3.3 反排序法

数组

1 数组定义方法

  • 数组名=(value0 valuel value2 …)

  • 数组名=( [0]=value [1]=value [2]=value …)

  • 列表名=“value0 valuel value2 …”

    • 数组名=($列表名)
  • 数组名[0]=“value”

    数组名[1]=“value”

    数组名[2]=“value”

2 获取数组长度

2.1 读取数组值

读取整个数组的值:${数组名[*]}

获取数组中其中一个元素的值:${数组名[索引号]}

2.2 数组切片

取数组中的某一段的元素的值

基本格式

${数组名[@或*]}:起始位置(起始索引):长度

echo ${arr1[*]:0:2} #这里是从0索引开始获得往后两位元素的值

echo ${arr1[*]:2:2} #获取从索引2开始往后获取两位元素的值

2.3 数组替换

  • 临时替换

$(数组名[@或*]/查找字符/替换字符}

eg:${数组名[*]/4/77}

  • 永久替换

数组名=($数组名[@或*]/查找字符/替换字符}

eg:数组名=($数组名[*]/4/77)

2.4 数组删除

删除整个数组:unset 数组名

删除指定元素:unset 数组名[索引号]

2.5 追加数组元素

数组名+=(要添加的元素)直接往后追加

3 实验

3.1 冒泡法

基本思想是对比相邻的两个元素值

  • 如果满足条件就交换元素值,把较小的元素移动到数组前面

把大的元素移动到数组后面(也就是交换两个元素的位置)

  • 这样较小的元素就像气泡一样从底部上升到顶部

算法思路

冒泡算法由双层循环实现,其中外部循环用于控制排序轮数

一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比

同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小

以确定是否交换位置,对比和交换次数随排序轮数而减少
在这里插入图片描述

3.2 直接选择法

与冒泡排序相比,直接选择排序的交换次数更少,所以速度会快些

基本思想

将指定排序位置与其它数组元素分别对比,

如果满足条件就交换元素值,注意这里区别冒泡排序,

不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换
在这里插入图片描述

这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的格式
反序排序

以相反的顺序把原有数组的内容重新排序

3.3 反排序法

基本思想

把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换

有数组的内容重新排序。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现在的00后,实在是太卷了,我们这些老油条都想辞职了......

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪20K,都快要超过我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家…

真题详解(传引用)-软件设计(七十五)

真题详解(补码转换)-软件设计(七十四)https://blog.csdn.net/ke1ying/article/details/130674214 分治算法技术设计______。 答案:1、问题划分 2、递归求解 3、合并解 虚拟存储体系_____两级构成。 解析:主存 和 辅…

linux环境安装使用tomcat详解

01-安装Tomcat # 0.下载tomcat http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz # 1.通过工具上传到Linux系统中 # 2.解压缩到/usr目录中 [rootlocalhost ~]# tar -zxvf apache-tomcat-8.5.46.tar.gz -C /usr/ -C 用来指…

【AI绘图 丨 Midjourney 系列教程二】— 初识超火的AI绘画神器Midjourney

今天起,由 Midjourney 打头阵,让我们开始共同探索一系列的 AI 领域革命性作品,包括 Midjourney、Stable Diffusion、ChatGPT 等等,学习这些新时代的魔法和它的咒语。 写在前面 官方文档是最好的入门课程。相较于市面上琳琅满目的…

《计算机网络—自顶向下方法》 Wireshark实验(七):以太网与ARP协议分析

1 以太网 1.1 介绍 以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。 经典以太网:是以太网的原始形式,运行速度从 …

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制)

信创办公–基于WPS的EXCEL最佳实践系列 (宏的录制) 目录 应用背景操作步骤1、宏的录制启用2、宏的使用3、宏的保存4、宏的禁用 应用背景 宏是一个自动化完成重复性工作的工具,使用宏可以提高我们的工作效率,那应该怎样使用宏这一…

ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL

文章目录 1 报错内容2 报错解决3 并行处理的设置补充说明 1 报错内容 通常为连续两段报错: Error Number :-2147467259 Error Message :对 COM 组件的调用返回了错误 HRESULT E_FAIL 。 Module name : mSWFlow Function name : createStream Procedure ( error li…

chatgpt赋能Python-python3_5如何安装

Python3.5安装指南 Python是一种高级编程语言,它广泛用于Web开发、数据分析、机器学习等领域。在Python的众多版本中,Python3.5是最常用的版本之一。如果你正在考虑学习Python3.5或者需要使用Python3.5进行项目开发,那么接下来的安装指南将会…

第十三章 使用DHCP动态管理主机地址

文章目录 第十三章 使用DHCP动态管理主机地址一、动态主机地址管理协议1、DHCP简介2、DHCP常见术语 二、部署DHCP服务程序1、安装DHCP服务程序2、配置文件参考模板3、dhcpd服务程序配置文件中常见参数及作用 三、自动管理IP地址1、机房所用的网络地址以及参数信息2、关闭虚拟网…

Flink从入门到精通之-10容错机制

Flink从入门到精通之-10容错机制 流式数据连续不断地到来,无休无止;所以流处理程序也是持续运行的,并没有一个明确的结束退出时间。机器运行程序,996 起来当然比人要容易得多,不过希望“永远运行”也是不切实际的。因…

STM32-ADC多通道输入实验

之前已经介绍了几个ADC的笔记和实验了,链接如下: 关于ADC的笔记1_Mr_rustylake的博客-CSDN博客 STM32-ADC单通道采集实验_Mr_rustylake的博客-CSDN博客 STM32-单通道ADC采集(DMA读取)实验_Mr_rustylake的博客-CSDN博客 接下来…

语音常识与基本概念

数字信号 连续时间信号:在连续时间范围内定义的信号,信号的幅度可以是连续的(模拟信号),也可以是离散的 离散时间信号:时间为离散变量的信号,即独立变量时间被量化了,而幅度仍是连续变化的 数字信号&#x…

【云计算与虚拟化】第二章 实验二 Vmware Workstation 15的使用

实验二 Vmware Workstation 15的使用 在上一实验的基础上,将两台虚拟机调节到在桥接模式下,配置相应的网络参数,实现虚拟机1和2能相互通信,虚拟机1和2能够ping通外网,虚拟机1和2能ping通物理机。 (截取…

车规级MCU芯片

作为车辆控制的核心器件,MCU主要用于车身控制、驾驶控制、信息娱乐和驾驶辅助系统。 8位MCU :提供低端控制功能:风扇控制、空调控制、雨刷、天窗、 车窗升降、低端仪表盘、集线盒、座椅控制、门控模块。 16位MCU :提供中端控制功能:用于动力…

【QuartusII】0-创建工程模板

一、创建工程 1、激活安装quartus II软件后,打开即见如下界面 2、在菜单栏 “File -> New Project Wizard…”中,进入创建工程流程 3、第一部分,如下图,配置路径、项目名称、以及顶层文件(类似C语言的main&#xf…

MySQL---存储过程(局部变量、用户变量、系统变量(全局变量、会话变量)、传参(in、out、inout))

1. 存储过程特性 存储过程就是数据库 SQL 语言层面的代码封装与重用。 有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现 复杂的逻辑功能; 函数的普遍特性:模块…

Spark大数据处理讲课笔记4.5 Spark SQL数据源 - Hive表

文章目录 零、本讲学习目标一、Spark SQL支持读写Hive二、Spark配置hive-site.xml三、准备工作(一)启动Hive的metastore(二)启动Spark Shell 四、Spark读写Hive数据(一)导入SparkSession(二&…

JavaScript实现打印倒金字塔的代码

以下为实现打印倒金字塔的程序代码和运行截图 目录 前言 一、实现打印倒金字塔 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以在目录里进行快速查找; 2.本博文代码可以根据题目要求实现相关使用功…

Word如何设置页码?3个简单方法快速设置!

案例:Word如何设置页码 【在使用word文档时,由于页数太多了,想给文档设置页码,但是不知道该如何设置?请大家帮帮我!】 对于经常使用word进行办公的朋友来说,设置页码应该是个比较常见的需求了…

【服务器】无公网IP,异地远程连接威联通NAS

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 前言 1. 威联通安装cpolar内网穿透 2. 内网穿透 2.1 创建隧道 2.2 测试公网远程访问 3. 配置固定二级子域名 3.1 保留二级子域名 3.2 配置二级子域名 4. 使用固定二级子…