当前位置:网站首页>数组、冒泡的认识
数组、冒泡的认识
2022-07-17 00:16:00 【世上无难事754】
文章目录
一数组
1.1数组的定义
- 数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用
- 数组的类型
普通数组:不需要声明直接定义,下标索引只能是整数
关联数组:需要用declare -A 声明否则系统不识别,索引可以是字符串
1.2数组的定方式
A="1 2 3 456" //定义字符串
A=(1 2 3 4 456) //定义数组(里面的每个数字又被称为元素)
0 1 2 3 4 //其下标示,0为起始(又称数组下标,索引下标)
第一种:
直接把要加入数组的元素用小括号括起来,中间用空格分开
数组名=(value0 value1 value2)
num=(11 22 33 44)
echo ${
#num} ##显示单个字符串长度
2
[[email protected] ~]# echo ${num[*]} ##显示详细字符串(数组)内容,#号换@也可以效果一样
11 22 33 44
[[email protected] ~]# echo ${#num[*]} ##显示所有字符串(数组)长度,#号换@也可以效果一样
4
第二种:
精确的给每一个下标索引定义一个值加入数组,索引数字可以不连续
数组名=([0]=value [1]=value [2]value ...)
num=([0]=55 [1]=66 [2]77 [4]88)
[[email protected] ~]# echo ${num[*]}
[0]55 [1]66 [2]77 [3]88
第三种:
先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组
列表名="value0 value1 value2...."
数组名=($列表名)
list="11 12 13 14"
num=($list)
[[email protected] ~]# echo ${num[*]}
11 12 13 14
[[email protected] ~]# echo ${#num[*]}
4
第四种:
根据下标定义
数组名[0]="11"
数组名[0]="22"
数组名[0]="33"
数组名[0]="value"
数组名[0]="value"
数组名[0]="value"
1.3数组包括的数据类型
数值类型
字符类型:使用 " " 或 ’ ’ 定义
1.获取数组长度
num=(11 22 33 44)
[[email protected] ~]# echo ${#num[*]} ##显示所有字符串(数组)长度,#号换@也可以效果一样
4
[[email protected] ~]# echo ${#num[@]}
4
2.获取数据列表
num=(11 22 33 44)
[[email protected] ~]# echo ${num[*]} ##显示详细字符串(数组)内容,#号换@也可以效果一样
11 22 33 44
[[email protected] ~]# echo ${#num[@]}
11 22 33 44
3.数组元素遍历
#!/bin/bsah
arr=(1 2 3 4 5)
for i in ${arr[*]}
do
echo $i
done
[[email protected] ~]# sh 4.sh
1
2
3
4
5
4.元素切片
[[email protected] ~]# ky20-zy=(4 7 9 5 2) ##定义数组
[[email protected] ~]# echo ${ky20-zy[*]} ##输出数组里的元素
4 7 9 5 2
0 1 2 3 4 ##索引下标
[[email protected] ~]# echo ${ky20-zy[*]:2:3} ##提取从索引下标2开始的3个元素
9 5 2
[[email protected] ~]# echo ${ky20-zy[*]:2:2} ##提取从索引下标2开始的2个元素
9 5
[[email protected] ~]# echo ${ky20-zy[*]:3:2} ##提取从索引下标3开始的2个元素
5 2
[[email protected] ~]# echo ${ky20-zy[*]:1:2} ##提取从索引下标1开始的2个元素
7 9
5.数组元素替换
[[email protected] ~]# mqj=(36 35 34 33 32 31) ##定义数组
[[email protected] ~]# echo ${mqj[*]} ##输出数组里的元素
36 35 34 33 32 31
[[email protected] ~]# echo ${mqj[*]/3/55} ##将有3的元素替换或增加一个指定的数值55,只是覆盖,不是永久替换(仅替换每个元素的第一个匹配项)
556 555 554 553 552 551
6.数组删除
[[email protected] ~]# jmq=(34 45 55 12)
[[email protected] ~]# echo ${jmq[*]}
34 45 55 12
[[email protected] ~]# unset jmq ##删除数组
[[email protected] ~]# echo ${jmq[*]}
[[email protected] ~]# jmq=(34 45 55 12)
[[email protected] ~]# echo ${jmq[*]}
34 45 55 12
[[email protected] ~]# unset jmq[3] ##删除第四元素,中括号里的是索引下标,删除后只是不显示元素而已,但会变为空格占用索引下标,如果查看长度的话会减少
[[email protected] ~]# echo ${jmq[*]}
34 45 55
1.例:以数组的方式定义随机点名
[[email protected] opt]# vim w ##创建编辑一个文件写入名字和对应编号
1大狮子
2小兔子
3小海豚
4花蝴蝶
5小家雀
[[email protected] opt]# vim w.sh ##编写数组脚本
#!/bin/bash
bu=`cat /opt/w` ##定义变量
arr=($bu) ##定义数组变量
for i in ${arr[*]} ##循环查看里的内容数组
do
a=$[$RANDOM%5] ##定义变量取随机数
done
echo "小动物的编号和名字是: ${arr[$a]}" ##输出随机数对应的编号和名字
[[email protected] opt]# sh w.sh
小动物的编号和名字是: 1大狮子
简单方法
#!/bin/bash
bu=`cat /opt/w`
arr=($bu)
a=$[$RANDOM%5]
echo "小动物的编号和名字是: ${arr[$a]}"
二、数组排序算法(冒泡排序)
类似气泡上涌的动作,将会数据在数组中从小到大或者从大到小不断断向前移动
- 基本思想
冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部
- 算法思路
冒泡算法由两层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组就已经完成排序了
而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置对比和交换次数随排序轮数而减少
- 例:希望a和b的值对调位置
a=10
b=20
dxz=$a ##增加自定义变量dxz的目的,是为了让a自定义变量的赋值空闲出来,后续好调换
a=$b
b=$dxz
##dxz=$a
dxz=10
a=10
b=20
##a=$b
dxz=10
a=20
b=20
##b=$a
dxz=10
a=20
b=10
a=20
b=10
##冒泡排序元素调换
dxz=(10 20)
echo ${dxz[*]}
##交换位置
xtz=`echo ${dxz[0]}`
dxz[0]=`echo ${dxz[1]}`
dxz[1]=$xtz
echo ${dxz[*]}
[[email protected] ~]# sh 7.sh
10 20
20 10
##a=$b
dxz=10
a=20
b=20
##b=$a
dxz=10
a=20
b=10
a=20
b=10
##冒泡排序元素调换
dxz=(10 20)
echo ${dxz[*]}
##交换位置
xtz=echo ${dxz[0]}
dxz[0]=echo ${dxz[1]}
dxz[1]=$xtz
echo ${dxz[*]}
[[email protected] ~]# sh 7.sh
10 20
20 10

边栏推荐
猜你喜欢
![[unity Editor Extension] unity makes its own exclusive editor panel](/img/67/12a4ab5167d4a5fc2aaba5220c8df9.png)
[unity Editor Extension] unity makes its own exclusive editor panel

Cocoon breaking and rebirth of 3D NFT: caduceus decentralized edge rendering technology

MeterSphere基于JMeter分布式性能压测平台

General knowledge of network (detailed)
![[unity Editor Extension] displays the memory size of all files in the resource directory](/img/2a/6142d07d2857bbdeaf06a9eb5f2cbb.png)
[unity Editor Extension] displays the memory size of all files in the resource directory

Network layer protocol and IP packet format (detailed)
![[unity Editor Extension] find all objects of a script attached in the scene and resources](/img/c2/ea07a227535755945100dc80a43658.png)
[unity Editor Extension] find all objects of a script attached in the scene and resources

并发虚拟用户、RPS、TPS的解读

How to use nmon

Use of sqlmap
随机推荐
How to add software shortcuts to the right mouse button list
已知先序遍历中序遍历,求树的层序遍历
Firewalld 防火墙
Jmeter beanshell实现把请求生成的参数化数据写入文件
Analysis of the paradise of metauniverse developers the ecological value of the metauniverse protocol caduceus
Subnet division (see details)
"Visual C # from getting started to mastering" personal learning arrangement
How to use nmon
Dirty reading, unreal reading, non repeatable reading
SSH远程控制与访问
Detailed explanation of caduceus project of metauniverse public chain (I): project concept and technical framework of caduceus metaverse protocol
This article only commemorates the modulus of negative numbers
JMeter response time test component & multi interface concurrency
The JMeter BeanShell implementation writes the parameterized data generated by the request to the file
[antv G2] how to solve the memory leak caused by G2
登录功能的测试点大全
剑指 Offer 53 - I. 在排序数组中查找数字 I
Flyway的SaaS多租户实现方案
[unity Editor Extension] unity makes its own exclusive editor panel
postman的json脚本转jmeter的jmx脚本