[英]sort two arrays accordingly in bash
我有兩個全局數組: X
和Fx
。
我正在對X
數組進行排序,並嘗試將 fx 數組中的相應值隨着 X 移動而移動。 所有這些都是冒泡排序。
在 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.