方法1:
在对数组进行冒泡排序时,无需进入脚本修改调用的数组名,只需要在脚本执行时在其后加上位置变量$1(数组文件名)即可
1.创建一个文件,写入一组无规律排序的数字,通过调用函数的方式对该文件内的数字进行排序。
[root@localhost ~]
22
55
11
44
66
88
77
33
2.创建脚本
[root@localhost ~]
myarray () {
array=(`echo $@`)
a=${#array[*]}
for ((i=1; i<$a; i++))
do
for ((j=0; j<$a-i; j++))
do
if [ ${array[$j]} -gt ${array[$[$j+1]]} ];then
temp=${array[$j]}
array[$j]=${array[$[$j+1]]}
array[$[$j+1]]=$temp
fi
done
done
echo ${array[*]}
}
path=`pwd`
newpath=$path/newfile.txt
if [ -f $1 ];then
file=`cat $1`
else
file=`cat $path/$1`
fi
for value in $file
do
echo -n " $value" >> $newpath
done
arr=(`cat $newpath`)
echo "原始数组为:${arr[*]}"
result=`myarray ${arr[*]}`
rm -rf $newpath
echo "排序后数组为:$result"
[root@localhost ~]
原始数组为:22 55 11 44 66 88 77 33
排序后数组为:11 22 33 44 55 66 77 88
方法2:
在对数组进行冒泡排序时,需要在脚本中指定需要排序的数组名或文件名,此方法在每次排序不同数组时,需要重新修改文件名
1.创建一个文件,方法同方法1
2.创建脚本
[root@localhost ~]
myarray() {
array=(`echo $@`)
a=${#array[*]}
for ((i=1; i<$a; i++))
do
for ((j=0; j<$a-i; j++))
do
if [ ${array[$j]} -gt ${array[$[$j + 1]]} ];then
temp=${array[$j]}
array[$j]=${array[$[$j+1]]}
array[$[$j+1]]=$temp
fi
done
done
echo ${array[*]}
}
i=0
file=`cat 1.txt`
for value in $file
do
arr1[$i]=$value
let i++
done
echo "原始数组为:${arr1[*]}"
result=`myarray ${arr1[*]}`
echo "排序后数组为:$result"
[root@localhost ~]
原始数组为:22 55 11 44 66 88 77 33
排序后数组为:11 22 33 44 55 66 77 88