Shell 脚本——冒泡排序

冒泡的概述

冒泡排序其实就是类似于气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动

图示参考:
在这里插入图片描述

基本思想

冒泡排序的基木思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。

算法思路

冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少。

命令示例

#!/bin/bash

SZ=(3 8 4 6 7 5 2 1)
a=$[ ${#SZ[*]} ]
for ((i=1; i<$a; i++))                    #######比较轮数为数组长度减一,从1开始
do
   for ((b=0; b<$a-i; b++))            #######比较相邻两个元素,较大的数往后放,比较次数随比较轮数而减少
do
if [ ${SZ[$b]} -lt ${SZ[$[$b+1]]} ];then            ###如果第一个元素比第二个元素大就互换
  jap=${SZ[$b]}                                        ######把第一个元素值保存到临时变量中
  SZ[$b]=${SZ[$[$b+1]]}                      ######把第二个元素值保存到第一个元素中
  SZ[$[$b+1]]=$jap                                #########把临时变量(也就是第一个元素值)保存到第二个元素中
fi
done
done
echo "${SZ[*]}"

命令图片示:(为的是:注意空格及操作效果)
在这里插入图片描述
显示图示:
在这里插入图片描述
################################
排序相反:
在这里插入图片描述
显示图示:
在这里插入图片描述

————————————————————————————————————————

到此结束…

感谢观看…喜欢的点个赞呦

猜你喜欢

转载自blog.csdn.net/XCsuperman/article/details/108100344