我有两个全局数组:X
和Fx
。
我正在对X
数组进行排序,并尝试在X移位时将fx数组中的相应值移位。所有这些都是按气泡排序的。
在FX阵列中什么也没发生。
对于以下示例:
x-( 3 2 1) fX-(1 2 3)
出将
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[@]}
}
如果数组是全局的
这是正确的方法
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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句