シェル----------バブリングアルゴリズム

バブルソート

気泡の上昇プロセスと同様に、データをアレイから上下に移動して、最大から最小へ、または最小から最大へのソートを実現できます。

アイデア
この並べ替えは、主に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个元素的原值)

おすすめ

転載: blog.csdn.net/weixin_48190875/article/details/108123946