Linux系统shell脚本冒泡排序,shell脚本实现冒泡排序(优化)

#!/bin/sh

#bubbling arithmetic

function bubbling(){

len=${#data[*]}

((len=len-1))

pos=0

for ((i=0;i

do

flag="0"  #using flag to end the foreach

#   echo "${i} ${len}"

for ((j=0;j

do

#    echo "for to ij position ${flag} ${len}"

#    echo "output data values ${data[$j]} ${data[$[j+1]]}"

if [ ${data[j]} -gt ${data[j+1]} ]

then

#     echo "for to ${j} position ${flag} $[len-1]"

#      data[0]=${data[$[j]]}

tmp=${data[j]}  #swap array data

data[$j]=${data[j+1]}

data[$[j+1]]=${tmp}

pos=$j

flag="1"

fi

#    echo "sort data are:${data[*]}"

done

len=${pos}

#   echo "len and pos values are ${len} ${pos}"

if [ ${flag} -eq "0"  ]

then

break

fi

done

echo ${data[*]}

#return 1

}

data=(1 5 6 9 2 6) #array data

bubbling ${data}  #invoking method and by value

echo "${data[*]}"    #return values

注:“$”符号表示引用变量,其中${data[$[j+1]]}和${data[${j+1}]}是不一样的,${data[$[j+1]]}表示先让j+1作运算并获取下标值,而${data[${j+1}]}仅表示获取j的下标值,关于+1它会自动忽视掉,若有更优化的算法,可以一块分享,探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值