当前位置: 首页 > article >正文

数组的应用

数组的概念

数组是一种数据结构,用于存储多个相同类型的元素。这些元素按照一定的顺序排列,并通过编号(下标)进行管理。数组在编程中非常常见,广泛应用于数据处理、算法实现等多个领域。数据就是定义了一系列,可以是整数,字符串,浮点数的变量值的集合

数组的作用

  • 数组可以一次性定义多个变量,可以直接引用
  • 高效的数据访问:数组通过索引直接访问元素,这使得数据的读取和写入都非常快速。
  • 简化数据管理:数组将相同类型的数据存储在一起,这有助于简化数据管理。
  • 支持随机访问:数组支持从任何位置开始访问元素,而不需要遍历整个数据结构

数组定义的方法

第一种

test1=10 20 30 40)
echo ${test1[*]}
打印数组里面的值

第二种

test1=([0]=10 [1]=23 [2]=43)

数组的操作

获取数组的长度

echo ${#abc[*]}:获取数组的长度

对数组内部的值进行遍历

abc=(1 2 3 4 5)
for i in ${abc[*]}
do
echo $i
done

数组的切片

echo ${abc[*]:0:2}
0:表示起始位置
2:表示步长
在这里插入图片描述

数组的值进行替换

临时替换

临时替换:只是临时替换,数组本身内容没有变
在这里插入图片描述

永久替换

永久替换:直接改变数组本身的值
在这里插入图片描述

删除数组

删除数组分为:删除整个数组和删除数组中的值

删除整个数组

unset 数组名
在这里插入图片描述

删除数组中的值

unset 数组名[索引]
在这里插入图片描述

追加数组中的元素

第一种方法

abc[索引]=数值
在这里插入图片描述

第二种方法

推荐方法:abc+=(6 7)
在这里插入图片描述

数组传参

向函数内部的数组传参

test1 ()  {
abc=($(echo  $@))
echo  ${{abc[*]}}
}
abc1=(1 2 3 4 5)
test1  ${abc1[*]}

练习

从外部传一个数组进入函数内部,数组的值都是整数,然后把这些值累加求和


#!/bin/bash
test () {
abc=($(echo $@))
sum=0
for i in ${abc[*]}
do
sum=$(($sum+$i))
done
echo "$sun"
}
abc1=(1 2 3 4 5)
test ${abc1[*]}

从外部传一个数组进入函数内部,数组的值都是整数,把数组内每个值*2,然后打印出来新的数组

test () {
abc=($(echo $@))
for ((i=0,i<$#-1;i++))
do
abc[i]=$((${abc[i]*2}))
done
echo ${abc[*]}
}
abc1=(1 2 3 4 5)
test ${abc1[*]}

冒泡排序

冒泡排序:把数组内的元素(整数),按照从小到大,或者从大到小的顺序排列

#!/bin/bash
abc=(40 50 31 5 10 98)
l=${#abc[*]}
for ((i=1;i<$l;i++))
do
	for ((k=0;k<$l-i;k++))
	do
		first=${abc[k]}
		j=$(($k+1))
		sceond=${abc[j]}
		if [ $first -lt $sceond ]
		then
			temp=$first
			abc[$k]=$sceond
			abc[$j]=$temp
		fi
	done
done

http://www.kler.cn/a/409721.html

相关文章:

  • 直播技术-Android基础框架
  • C# 数据结构之【图】C#图
  • 安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
  • 【npm设置代理-解决npm网络连接error network失败问题】
  • Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)
  • UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取
  • Burp学习(1)
  • 【Linux课程学习】:环境变量:HOME,su与su - 的区别,让程序在哪些用户下能运行的原理,环境变量具有全局性的原因?
  • 【笔记】Linux下编译Python3.10.15为动态库同时正确处理OpenSSL3依赖
  • 搭建帮助中心,打造卓越的用户体验
  • 基于神经网络的流量异常检测
  • 【CSS】页面滚动到一定位置时,指定区域固定不变
  • Vue.js 组件开发实例分析
  • 基于基于DCT的数字水印算法
  • 【离散数学】特殊关系的矩阵表示
  • NLP论文速读(Apple出品)|迈向更好的多模态指令遵循能力评估
  • Vue.js --- Vue3中其他组合式API
  • 语言模型中的多模态链式推理
  • 【Linux】线程ID与互斥、同步(锁、条件变量)
  • 第4章 三个域对象
  • 深度解析:Vue 自定义指令到底是什么?快来了解
  • 鸿蒙面试题-某迈-2024年11月22日
  • 对于某些原型或UI软件的个人看法(2024/11)
  • 【Qt】控件LineEdit
  • MySql:库和表的操作
  • 在Kubernetes使用CronJob实现定时删除指定天数外的文件(我这里使用删除备份mysql数据库文件为例)