バブルソート
気泡の上昇プロセスと同様に、データをアレイから上下に移動して、最大から最小へ、または最小から最大へのソートを実現できます。
アイデア
この並べ替えは、主に2つの隣接する数値を比較し、必要に応じてそれらを上下に移動することです。要件が昇順の場合、最初の数値が2番目の数値と比較されます。最初の数値が大きくなります。下に移動して3番目の数値と比較し、次に同様に次の値と比較して、位置を変更する必要があるかどうかを判断します(降順は逆です)。
運用プロセス図:
実装コード:
#!/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个元素的原值)