43、shell脚本详解(六)----数组简介和排序算法
一、数组
1、数组的定义方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qk8mxhHW-1646408635430)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644850593744.png)]
(1) 方式一:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cpa88WGM-1646408635431)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644850726120.png)]
(2)方法二:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u15PNOfq-1646408635432)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644850790457.png)]
(3)方法三:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbApiY3o-1646408635432)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644850833412.png)]
(4)方法四:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efZOGx4S-1646408635432)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644850853869.png)]
2、数组包括的数据类型
- 数值类型
- 字符类型(字符串):使用" "或’ '定义,防止元素当中有空格,元素按空格分割。
3、获取数组长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYKbPIV4-1646408635433)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644851299971.png)]
4、获取数据列表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHIsFfj0-1646408635433)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644851352759.png)]
5、读取某索引附值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VLqjb1Ky-1646408635433)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644851454011.png)]
6、数组遍历
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qZrGNrG-1646408635434)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644851705916.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqMOK4Gq-1646408635434)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644851735105.png)]
7、数组切片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wyE1uBhj-1646408635434)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644852133388.png)]
8、数组替换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kX1TMIVS-1646408635435)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644852332905.png)]
9、数组删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-895yTUN0-1646408635435)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644852800417.png)]
10、数组追加元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAswhtl5-1646408635435)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644853181894.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xErihXT6-1646408635435)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644915294829.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGbU0lCg-1646408635436)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644915417362.png)]
11、向函数传递数组参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5EUpZyhS-1646408635436)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644915936279.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hWZdG9f9-1646408635436)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644915992900.png)]
二、数组排序算法
1、冒泡排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tBonDuwc-1646408635437)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644916075604.png)]
类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动。
基本思想:
冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。
算法思路:
冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NH6l4qRp-1646408635437)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644918483061.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFMGN7hW-1646408635437)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644918501183.png)]
2、直接排序法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5W17e22l-1646408635438)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644921263255.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIAJwzjN-1646408635438)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644921281155.png)]
3、反转排序
- 以相反的顺序把原有数组的内容重新排序
- 基本思想:
- 把数组最后一个元素与第一个元素替换。倒数第二个元素与第二个元素替换,以此类推,直到把所有的数组元素反转替换完
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DBN1bVso-1646408635438)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644927776357.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJeBHmEO-1646408635439)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644927789309.png)]
4、希尔排序
希尔排序,又称缩小增量法。其基本思想是:
1.先选定一个小于N的整数gap作为第一增量,然后将所有距离为gap的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上述操作…
2.当增量的大小减到1时,就相当于整个序列被分到一组,进行一次直接插入排序,排序完成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aS9AnllN-1646408635439)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644929110608.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4bPBghz-1646408635439)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644929137345.png)]
原理例子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4cWihLs-1646408635440)(C:\Users\XTC\AppData\Roaming\Typora\typora-user-images\1644929277756.png)]
g-aS9AnllN-1646408635439)]
[外链图片转存中…(img-m4bPBghz-1646408635439)]
原理例子
[外链图片转存中…(img-k4cWihLs-1646408635440)]