#bash #bubble-sort
#bash #пузырьковая сортировка
Вопрос:
Мой код пузырьковой сортировки в скрипте bash не меняет местами и не сортирует. Помогите мне понять, что я делаю неправильно.
echo "Enter numbers between 4 and 12"
read n
#declare -a numArray #declare array of numbers
if [ $n -le 12 -a $n -ge 4 ]
then
#take input from user
echo "Enter numbers of array"
for (( i = 0; i < $n; i ))
do
read numArray[$i]
done
#sorting logic
for (( i = 0; i < $n; i ))
do
for (( j = 0; j < $n-1; j ))
do
# swapping logic
#read numArray[$j]
if [[ ${numArray[j]} -gt ${numArray[$((j 1))]} ]]
then
#echo "in swapping code"
temp=${numArray[j]}
echo $temp
numArray[$j]=${numArray[$((j 1))]}
numArray[$((j 1))]=$temp
fi
done
done
# print sorted data
echo -e "nSorted Numbers "
echo "${numArray[*]}"
else
echo "Please enter only values between 4 and 12"
fi
Результат:
Enter numbers between 4 and 12
5
Enter numbers of array
51428
51428
51428
51428
51428
Sorted Numbers
51428
Комментарии:
1. Я предлагаю вам использовать
bash -x scriptname
. Это поможет в отладке2. зачем вводить 5 из одного и того же числа
51428
? или вы имели в виду ввести5
(<return>)1
(<return>)4
(<return>)2
(<return>)8
(<return>)3. Похоже, вы только что ввели одно 5-значное число, а не 5 чисел. Вам нужно ввести каждое число в отдельной строке.