C04S05-Shell编程之数组

一、数组

1. 数组概述

数组是若干个数值的有序排列,其中的值被称为元素。每个元素都有一个对应的位置序号,这个位置序号被叫做是下标,数组的下标是从0开始的。

2. 数组语法

  1. 数组语法一

    变量名=(值1 值2 值3)
    
    # 数组打印
    echo ${变量名[*]} # 或者是@
    
  2. 数组语法二

    变量名=([0]=值1 [1]=值2 [2]=值3)
    

3. 数组的常见使用

  1. 根据数组索引获取对应元素。

    arr=(1 2 3 4 5)
    
    echo ${arr[0]} # 1
    
  2. 获取数组的长度。

    arr=(1 2 3 4 5)
    
    echo ${#arr[*]} # 5
    
  3. 数组的遍历。

    arr=(1 2 3 4 5)
    
    for i in ${arr[*]}
    do
      echo $i
    done
    
  4. 数组的切片。

    arr=(1 2 3 4 5)
    
    # 变量名[*]:起始索引:步长
    echo ${arr[*]:0:2} # 1 2
    
  5. 数组的元素替换。

    arr=(1 2 3 4 5)
    
    # 临时替换
    # 变量名[*]/原有值/新值
    echo ${arr[*]/3/6} # 1 2 6 4 5
    
    # 永久替换
    # 需要重新赋值
    arr=(${arr[*]/3/6})
    
  6. 数组的删除。

    arr=(1 2 3 4 5)
    
    # 删除整个数组
    unset arr
    
    # 删除数组中的某个元素
    unset arr[1]
    
    • 根据索引删除某个元素,只是将该索引对应的值删掉,索引对应的值变为空值;后面元素的索引并不会往前变动。
  7. 数组增加元素。

    arr=(1 2 3 4 5)
    
    # 第一种
    arr[5]=6
    
    # 第二种
    arr+=(值1 值2)
    
  8. 将数组作为参数传入函数。

    func () {
      new_arr=($@)
      
      echo ${new_arr[*]}
    }
    
    arr=(1 2 3 4 5)
    func ${arr[*]}
    

二、冒泡排序

1. 冒泡排序概述

冒泡排序是指将数组内的元素安装从大到小(或者从小到大)的顺序进行排列。相邻的两个元素会比较大小,如果顺序错误,就会交互两个数字的位置;这个步骤会反复执行,直到没有需要交换位置的元素为止。

每遍历一次,最大或者最小的元素就会排到最后,然后剩下的元素再重新比较大小来排序,重复执行该过程,直到顺序排列正确。

每遍历排序一次,就有一个元素排序完成,因此有n个元素的数组,需要n-1次遍历;每次需要进行排序的元素个数也逐次减1。

2. 冒泡排序的具体实现

#! /bin/bash

arr=(40 50 31 5 10 98)
len=${#arr[*]}

for ((i=1;i<len;i++)) # 外循环控制遍历次数
do
  for ((j=0;j<len-i;j++)) # 内循环控制数组的下标索引
  do
    k=$((j + 1))
    first=${arr[$j]}
    second=${arr[$k]}

    if [ $first -lt $second ]
    then
      arr[$j]=$second
      arr[$k]=$first
    fi
  done
done

echo ${arr[*]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值