Это мой код для сортировки пузырьков по n числам:
#!/bin/bash
echo -n "Input n, the number of numbers"
read N
declare -a array[N]
echo -e "Input the elements, press enter after each element"
for i in seq 1 $N
do
read array[$i]
done
swap1()
{ # for swapping two numbers, we are employing bubble sort
local temp = ${array[$1]}
array[$1] = ${array[$2]}
array[$2]=$temp
return
}
numb_elements=${#array[@]}
let "comparisons = $numb_elements - 1"
count=1
while [ "$comparisons" -gt 0]
do
index =0
while[ "$index" -lt "$comparisons" ];do
if [ ${array[$index]} \> ${array[ 'expr $index + 1']} ]
then
swap1 $index 'expr $index + 1'
fi
let "index += 1" # Or, index+=1 on Bash, ver. 2.1 or newer
done
let "comparisons -=1"
echo
echo "$count: ${array[@]}
echo
let "count +=1"
done
exit 0
У меня две проблемы с этим кодом:
- входной массив занимает всего 3 числа
- и затем я получаю сообщение об ошибке в строке 42 о синтаксической ошибке для команды, в то время как
Я пытался while [] ; do
, но это не работает.
Это был только день, когда я пробовал синтаксис bash.