linux shell实现冒泡算法

#设置数组values

values=(3953612932304182212825)

#获取values的个数

numvalues=${#values[@]}

#显示当前数组的值,用于跟踪

functionshowvalues

{

for((k=0;k<numvalues;k++));do

echo-ne"${values[$k]}"

done

echo

}

#冒泡算法:将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

functionbubble

{

for((i=0;i<numvalues;i++));do

ischanged=false

for((j=numvalues-1;j>i;j--));do

#如果轻的在下交换之,每次i的循环,都可以见最轻的放置在最上,并调整其他的位置,使之更为有序

if[${values[j]}-lt${values[j-1]}];then

temp=${values[j]}

values[j]=${values[j-1]}

values[j-1]=$temp

ischanged=true

fi

done

showvalues

#如果已经不需要调整,即有序,就跳出循环。

if[ischanged="false"];then

break;

fi

done

}

相关推荐