linux shell实现冒泡算法

#设置数组values
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
#获取values的个数
numvalues=${#values[@]}

#显示当前数组的值,用于跟踪
function showvalues
{
    for (( k=0; k < numvalues; k++)); do
        echo -ne "${values[$k]}  "
    done
    echo
}

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

你可能感兴趣的:(算法,linux,J#)