文章目录
- 数组
- 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 反排序法
基本思想
把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换
有数组的内容重新排序。