冒泡排序问题

冒泡排序问题

我是SHELL 新手,正在学习写SHELL 程序。我在网上看到别人写的冒泡排序,不是很理解,因此自己简单地写了写,但是总是 有些问题。望哪位高手给予指点
复制内容到剪贴板
代码:
#!/bin/sh
name=(44 34 75 39 9 11 3 2 1)
i=${#name[@]}
a=$($i-1)
echo "The array and number before sorting: ${name} and ${#name}"

j=0

while [ $j -lt $i ]

do
k=0
  while [ "$k" -lt "$a-$k" ]-----这里的循环有问题。。。
   do
     if [ ${name[$k]} -gt ${name[$k+1]} ]; then
      temp=${name[$k]}
      name[$k]= ${name[$k+1]}
      name[$k+1]=$temp
    fi
   let k++
  done
   let j++
done

echo "the array and number after sorting :${name}"
      
"$a-$k" 如何理解?      
while [ $j -lt $i ] ---这是外层循环,$I=N
while [  $k -lt '$a-$k'      ] ---这是内层循环,我是仿照C的冒泡来写的,$a=$i-1
For(i=0;i<n-1;i++)--这是外层循环,
{
for(j=0;j<n-i-1;j++)--这是内层循环

我猜这么那么拿过来,不是SHELL风格:(      
希望高手们来帮助解决一下,或者能把你的想法告诉我,不胜感激!!!      
程序中不要使用$i $j $k $m $n这样的变量明,这是糟糕的名字      
引用:
原帖由 skyblue1 于 2008-10-22 17:47 发表
希望高手们来帮助解决一下,或者能把你的想法告诉我,不胜感激!!!
冒泡排序的思想想必你是理解了的, 看样子目前你的问题是对 shell 的语法还不清楚 建议先从基础开始学习      
谢谢各位的回复和支持!!!我已经解决了!!很高兴!因为格式和语法让我花了一天的时间才搞定这个小小的程序!!
其实LINUX的基础和语法非常重要!!我准备一个月的时间专注看一本好的LINUX书!!
在此其间,我仍然会做各类小程序希望大家继续支持帮助我!!然后,我想编写一下大家有兴趣的俄罗斯方块来验证我的学习成果!!
爱好LINUX的朋友,我们一起来进步!!      
应该使用sort命令吧?      
引用:
原帖由 blackspace 于 2008-10-23 10:18 发表
应该使用sort命令吧?
一贯的搞怪风格