数组
数组定义方法
方法一:
数组名=(value0 valuel value2 …)
方法二:
数组名=( [0]=value [1]=value [2]=value …)
方法三:
列表名=“value0 valuel value2 …”
数组名=($列表名)
方法四:
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
获取数组长度
${#数组名[*]}
读取数组值
读取整个数组的值:${数组名[*]}
获取数组中其中一个元素的值:${数组名[索引号]}
数组切片
取数组中的某一段的元素的值
格式:
${数组名[@或*]}:起始位置(起始索引):长度
eg:echo ${arr1[*]:0:2} #这里是从0索引开始获得往后两位元素的值
echo ${arr1[*]:2:2} #获取从索引2开始往后获取两位元素的值
数组替换
临时替换
$(数组名[@或*]/查找字符/替换字符}
eg:${数组名[*]/4/77}
永久替换
数组名=($数组名[@或*]/查找字符/替换字符}
eg:数组名=($数组名[*]/4/77)
数组删除
删除整个数组:unset 数组名
删除指定元素:unset 数组名[索引号]
追加数组元素
数组名+=(要添加的元素)直接往后追加
实验
冒泡法
基本思想:
冒泡排序的基本思想是对比相邻的两个元素值,
如果满足条件就交换元素值,把较小的元素移动到数组前面,
把大的元素移动到数组后面(也就是交换两个元素的位置) ,
这样较小的元素就像气泡一样从底部上升到顶部
算法思路:
冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,
一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,
同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,
以确定是否交换位置,对比和交换次数随排序轮数而减少。
直接选择法
与冒泡排序相比,直接选择排序的交换次数更少,所以速度会快些。
基本思想:
将指定排序位置与其它数组元素分别对比,
如果满足条件就交换元素值,注意这里区别冒泡排序,
不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换
(如从最后一个元素开始排序) ,
这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的格式。
反序排序
以相反的顺序把原有数组的内容重新排序。
基本思想:
把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换。