冒泡排序
类似于气泡上涌的过程,可以把数据从数组中,上下进行移动,实现从大到小或从小到大的排序。
思路
这个排序主要是把相邻的两个数进行比较,按要求进行上下移动,如果要求是升序,那么就会从第一个数与第二个数进行比对大小,第一个数值大就会下移与第三数比对,依次类推与下面数值进行大小比对,进行判断是否需要改变位置;降序就是与其相反。
运算过程图解:
实现代码:
#!/bin/bash
f=`cat /root/arr.txt` ##把arr.txt文件里的数值赋给f
array=($f)
a=${#array[*]}
for ((i=1; i<$a; i++ )) ###比较轮数为数组长度减1
do
for ((j=0; j<$a-i; j++))
do
if [ ${array[$j]} -gt ${array[$[$j+1]]} ];then ###第一个数比第二个数大就进行互换
temp=${array[$j]} ##把第一个数赋值给temp(临时变量)
array[$j]=${array[$[$j+1]]} ###把第二个数赋值给第一个数
array[$[$j+1]]=$temp ###把temp(临时变量)赋值给第二个数
fi
done
done
echo ${array[*]}
注释:
${#array[*]} ##获取当前数组位数
${array[$j]} ##第一个元素
${array[$[$j+1]]} ##第二个元素
temp ##临时变量(第1个元素的原值)