首页 > 其他分享 >数组

数组

时间:2023-02-05 23:44:47浏览次数:53  
标签:echo 数组名 arr4 arr2 数组 array

数组

一、数组的概念

1、定义数组

方法一:

数组名=(value0 value1 value2 …)

方法二:

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

方法三:

数组名[0]=“value”

数组名[1]=“value”

数组名[2]=“value”

2、数组包括的数据类型

(1)数值类型
(2)字符类型(字符串)
使用" "或''定义,防止元素当中有空格,元素按空格分割

3、索引(下标)

第一个索引始终是数字 0,且添加到数组中的每个后续元素的索引以 1 为增量递增

例如数组abc=(a b c d);第一个数据a的索引就是0,第二个数据b的索引就是1,以此类推。

4、获取数组长度

arr_number=(1 2 3 4 5)
echo ${#arr_number[*]}

5、读取某个下标赋值

arr=(1 2 3 4 5)
echo ${arr[索引值]}

二、对数组进行操作

1、数组遍历

#!/bin/bash
arr5=(1 2 3 4 5)
for i in ${arr5[*]}
do
  echo $i
done

2、补充:@和@和*的区别

$@和$*的区别
两者没加""是什么区别
加上""
$* 将数组中的数据作为一个整体使用
$@ 将数组中每个参数分别作为单个的个体使用
$# 显示的是参数的数量,也可称为长度

3、数组切片

arr1=(1 2 3 4 5 6)
echo ${arr1[*]}           
echo ${arr1[@]}       #输出整个数组,此处*与@相同
echo ${arr1[@]:0:2}   #获取 ${数组名[@或*]:起始位置:长度} 的值

4、数组替换

式:${数组名[*或@]/源参数值/将要替换的参数值}
arr2=(1 2 3 4 5)
#临时替换:将数组arr1中的参数值4替换为66,但原来的数组中的参数值并不会改变
echo ${arr2[*]/3/66}     
echo ${arr2[*]}

#永久替换:可通过重新赋值实现
arr2=(${arr2[*]/3/66})   
echo ${arr2[*]}

5、数组删除

格式:unset 数组名[索引]     #删除单个
    或unset 数组名          #删除整个数组
#删除单个参数值
arr3=(1 2 3 4 5)
echo ${arr3[*]}
unset arr3[2]
echo ${arr3[*]}

#删除数组
unset arr3
echo ${arr3[*]}

6、数组追加

方法一:单个添加,需要知道数组中有多少参数,以及没有对数组进行任何删减

arr4=(1 2 3 4 5 6 7)
echo ${arr4[*]}
arr4[7]=8          #指定索引添加参数
echo ${arr4[*]}

方法二:直接获取源数组的全部元素再加上新要添加的元素,一并重新赋予该数组,重新刷新定义索引,可以避免中间有删减的情况

arr4=(1 2 3 4 5 6 7)
echo ${arr4[*]}
arr4=("${arr4[@]}" 8 9 10)  #加上新参数重新定义数组
echo ${arr4[*]}

方法三:待添加元素必须用“()”包围起来,并且多个元素用空格分隔

arr4=(1 2 3 4 5 6 7)
echo ${arr4[*]}
arr4+=(10 11 12)   #添加参数,这种方法用的比较多
echo ${arr4[*]}

7、数组传参给函数

#!/bin/bash
test1 () {
   echo "接受到的参数列表:$@"
   newarrary=$1                 
   echo "新数组的值为:${newarrary[*]}" 
}

array=(3 2 1 4 5)
echo "原始数组的值为:${array[*]}"
test1 $array                       #将数组变量作为函数的参数,只会取数组变量的第一个值

解决这个问题则需要将数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成一个新的数组变量

test2() {
newarrary=($(echo $@))
   echo "新数组的值为:${newarrary[*]}"
}
array=(3 2 1 4 5)
echo "原始数组的值为:${array[*]}"
test2 ${array[*]}

#!/bin/bash
qiuhe () {
  arr1=(`echo $@`)
  sum=0
  for i in ${arr1[*]}
  do
    sum=$[$sum + $i]
  done
  echo "数组内相加结果为:$sum"
}
chengfa () {
  arr2=(`echo $@`)
  for ((i=0;i<=$[$# - 1];i++))
  do
    arr2[$i]=$[${arr2[$i]} * 2]
  done
  echo "乘法运算后的数组为:${arr2[*]}"
}
arr=(3 2 1 4 5)
test2 ${arr[*]}
test3 ${arr[*]}

三、冒泡排序

每次对比,确定最后一位【所以我数组长度需要-1】
#!/bin/bash
array=(90 70 82 100 30 66) #定义数组
echo "old_array:${array[*]}" #1.代表排序前的数组

lt=${#array[*]} #数组长度
#定义比较轮数,比较轮数为数组长度-1,从1开始
for ((i=1;i<=$lt;i++))
#当下标为0时for ((i=0;i<$lt;i++))
do
   #确定比较元素的位置,比较相邻的两个元素,较大的数往后放,在比较次数谁比较轮数而减少
    for ((j=0;j<$lt-i;j++))
    do
        #定义第一个元素的值
       first=${array[$j]}
       #定义第二个元素的值
       k=$[$j+1]
       second=${array[$k]}
      #如果第一个元素比第二个元素大,就互换
      if [ $first -gt $second ];then
      #把第一个元素的值保存到临时变量中
       temp=$first
     #把第二个元素赋值给第一个元素
       array[$j]=$second
     #把临时变量赋值给第二个元素
       array[$k]=$temp
   fi
    done
done
echo "new_array:${array[*]}"

标签:echo,数组名,arr4,arr2,数组,array
From: https://www.cnblogs.com/xuyuankai/p/17094210.html

相关文章

  • Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK
    一、shell数组1.数组分类①关联数组:必须声明才可以使用,命令:delare -A  数组名  ②普通数组:利用数字下标节约变量,可以不声明也可以声明,命令:delare-a 数组名d......
  • JavaScript 中获取数组最后一个元素3种方法及性能
    当需要从JavaScript中的数组中获取最后一个元素时,有多种选择,本文将提供3种可用方法。1.数组length属性​​length​​属性返回数组中元素的数量。从数组的长度中减......
  • PHP遍历数组的6种方式总结
    目录1、foreach2、array_map3、array_walk4、for5、each6、reset总结在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来......
  • 关于PHP数组迭代器的使用方法实例
    近来在开发一个视力筛查电子报告系统的产品,这个产品的作用是自动提取视力筛查过程中得到的屈光检查数据,并结合数据自动生成通俗易懂且专业的电子报告,以方便家长可以通过公......
  • 代码随想录算法训练营Day5 数组、链表复习
    数组部分数组最重要的思维方式是双指针的使用。快慢指针在进行元素移除和元素操作时会使用两个for循环嵌套,此时时间复杂度为O(n²)。在for循环中通过双指针(快慢指针)的使......
  • 一维/二维数组和普通/对称/三角/三对角/稀疏矩阵的存储
    文章目录​​1数组​​​​1.1一维数组​​​​1.2二维数组​​​​2矩阵​​​​2.1普通矩阵​​​​2.2特殊矩阵​​​​2.2.1对称矩阵​​​​2.2.1.1策略1​​......
  • php去掉一维数组的键值的实例方法
    在PHP中,数组的每个元素都是由键值对(key-value)组成,通过元素的键名来访问对应键的值。提示:“索引”和“键名”指的是同一样东西,“索引”多指数组数字形式的下标。有时......
  • 数组结构的超简单介绍
    有限个相同类型的变量组成的有序集合叫做数组,其中数组的下标是从0开始的在存储方式上,会创建连续的内存空间存放一组类型相同的数据从0开始是计算效率考虑下面定义一个数......
  • 数组
    数组数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每个数据称作一个数组元素,每个数组元素可以通过一......
  • 合并两个有序数组(思维过程)
    题目:给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同......