簡體   English   中英

Linux/Unix 中的冒泡排序 shell 腳本

[英]Bubble sort in Linux/Unix shell scripting

我正在嘗試執行冒泡排序是 Unix shell 腳本。 為什么我的代碼不起作用?

a=(10 8 20 25 12)

for ((i=0;i<5;i++))
do
 for((j=0;j<5;j++))
 do
if ((${a[j]} > ${a[$((j+1))]}))
then
  v=${a[$j]}
  a[$j]=${a[$((j+1))]}
  a[$((j+1))]=$v
    fi
 done
done
    echo ${a[*]}
    echo "end..."

我想這是功課。 因此,我不提供代碼,只需指出代碼中的錯誤:

for((j=0;j<5;j++))然后讀a[j+1] ,這里會有問題,因為當j=4j+1不存在

修復它,你的程序將排序。

嘗試這個:

echo "Enter size of array";
read  n; #get the size of array from user.
echo "Enter the array";
read -a arr;  #get the array form user eg: 2 3 4 5 6
echo "Orignal array is: ${arr[*]}"; #print orignal array

flag=1;
for (( i = 0; i < $n-1; i++ ))
do
    flag=0;
    for ((j = 0; j < $n-1-$i; j++ ))
    do
        if [[ ${arr[$j]} -gt ${arr[$j+1]} ]]
        then
            temp=${arr[$j]};
            arr[$j]=${arr[$j+1]};
            arr[$j+1]=$temp;
            flag=1;
        fi
    done

    if [[ $flag -eq 0 ]]; then
        break;
    fi
      
done
echo "Final sorted Array is ${arr[*]}";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM