冒泡排序Shell,无输出
Bubble Sort Shell, no output
我在 shell 中尝试使用冒泡排序时遇到问题,我不确定我的问题出在哪里,因为我假设我的排序是正确的。我没有收到错误,但我根本没有对数字进行排序。
#!/bin/bash
array=( "$@" )
#echo ${array[@]} print all elements in the array
if [ $# -gt 9 ]
then
echo Too many arguments, run the program over again
exit
fi
j=0
flag=1
a=${#array[@]}
for((j=0;j < $a - 1 && flag==1 ;j++))
do
flag=0
for((i=0; i< $a-j-1; i++))
do
x=${array[$i]}
y=${array[$i+1]}
if ((x>y))
then
flag=1
export temp=$x
export x=$y
export y=$temp
fi
done
done
echo "Sorted Array: " ${array[@]}
正如评论中指出的那样,您交换了变量 x
和 y
但绝不会交换任何数组条目。而不是
x=${array[$i]}
y=${array[$i+1]}
if ((x>y)); then
flag=1
export temp=$x
export x=$y
export y=$temp
fi
写
x=${array[$i]}
y=${array[$i+1]}
if ((x>y)); then
flag=1
array[$i]="$y"
array[$i+1]="$x"
fi
我在 shell 中尝试使用冒泡排序时遇到问题,我不确定我的问题出在哪里,因为我假设我的排序是正确的。我没有收到错误,但我根本没有对数字进行排序。
#!/bin/bash
array=( "$@" )
#echo ${array[@]} print all elements in the array
if [ $# -gt 9 ]
then
echo Too many arguments, run the program over again
exit
fi
j=0
flag=1
a=${#array[@]}
for((j=0;j < $a - 1 && flag==1 ;j++))
do
flag=0
for((i=0; i< $a-j-1; i++))
do
x=${array[$i]}
y=${array[$i+1]}
if ((x>y))
then
flag=1
export temp=$x
export x=$y
export y=$temp
fi
done
done
echo "Sorted Array: " ${array[@]}
正如评论中指出的那样,您交换了变量 x
和 y
但绝不会交换任何数组条目。而不是
x=${array[$i]}
y=${array[$i+1]}
if ((x>y)); then
flag=1
export temp=$x
export x=$y
export y=$temp
fi
写
x=${array[$i]}
y=${array[$i+1]}
if ((x>y)); then
flag=1
array[$i]="$y"
array[$i+1]="$x"
fi