【发布时间】:2017-10-12 13:31:36
【问题描述】:
array=( $(<abc.txt) )
len=${#array[*]}
i=0
while [ $i -lt "$len" ]
do
j=0
while [ $j -lt $(( (len - 1)) - i)) ]
do
k=$((j + 1))
if [ "${array[$j]}" -gt "${array[$k]}" ]
then
temp=${array[$j]}
array[$j]=${array[$k]}
array[$k]=$temp
fi
j=$k
done
i=$((i + 1))
done
echo "${array[@]}"
我的数组未排序,并且我还收到一条消息“:预期整数表达式”。它在我朋友的电脑上运行良好。我只想从另一个文件获取输入到数组,然后使用冒泡排序。如果我将数组声明为 array=( 1 2 3 4 9 8 7 6 5 ),它也可以正常工作。
【问题讨论】:
-
有什么理由不使用
sort命令? -
你不需要嵌套算术表达式;
$(( (len -1) - i ))就足够了。 -
因为作为学生我要实现冒泡排序算法
-
首先通过 shellcheck.net 运行你的代码。
-
任何要求您在
bash中编写排序例程的老师都忽略了shell 脚本语言的要点。如果他们教你使用不带引号的参数扩展,他们也不太了解 shell。
标签: bash bubble-sort