我有两个全局数组:X
和Fx
。
我正在对X
数组进行排序,并尝试在X移位时移动fx数组中的相应值。通过冒泡排序所有这些。
在fx数组中没有任何事情发生。
以下示例:
x-( 3 2 1) fX-(1 2 3)
Out将是
x-(1 2 3 ) fx-(3 2 1)
这是我的代码:
function extractLoopPoints
{
bubble_sort
echo " inputX: ${xArray[@]}"
echo " inputX: ${fxArray[@]}"
echo "output: $(bubble_sort ${xArray[@]})"
echo "output fx: $(bubble_sort ${fxArray[@]})"
}
function bubble_sort()
{
local xArray=($@) local fxArray=($@) max=$(($# - 1))
while ((max > 0))
do
local i=0
while ((i < max))
do
if [ ${xArray[$i]} \> ${xArray[$((i + 1))]} ]
then
local t=${xArray[$i]}
local tf=${fxArray[$i]}
xArray[$i]=${xArray[$((i + 1))]}
fxArray[$i]=${fxArray[$((i + 1))]}
xArray[$((i + 1))]=$t
fxArray[$((i + 1))]=$tf
fi
((i += 1))
done
((max -= 1))
done
echo ${xArray[@]}
echo ${fxArray[@]}
}
答案 0 :(得分:1)
如果数组是全局的
她是正确的方式
function bubble_sort()
{
local max=${#xArray[@]}
size=${#xArray[@]}
while ((max > 0))
do
local i=0
while ((i < max))
do
if [ "$i" != "$(($size-1))" ] #array will not be out of bound
then
if [ ${xArray[$i]} \> ${xArray[$((i + 1))]} ]
then
local t=${xArray[$i]}
xArray[$i]=${xArray[$((i + 1))]}
xArray[$((i + 1))]=$t
local tf=${fxArray[$i]}
fxArray[$i]=${fxArray[$((i + 1))]}
fxArray[$((i + 1))]=$tf
fi
fi
((i += 1))
done
((max -= 1))
done
}