61.输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
#升序排序
root@ubuntu2004:~# vim maopao.sh
#!/bin/bash
#
#**********************************************************************************************
#Author: Raymond
#QQ: 88563128
#Date: 2021-10-22
#FileName: maopao.sh
#URL: raymond.blog.csdn.net
#Description: The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
#!/bin/bash
while :
do
declare -a NUMS
read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
if [ $N == "q" ];then
break
elif [ $N == "e" ];then
L=${
#NUMS[*]}
if [ $L == 0 ];then
echo 没有数字。
elif [ $L == 1 ];then
echo 只有一个数字,无需排序。
else
for i in `seq $[L-1]`;do
for j in `seq $i $[L-1]`;do
MIN=${NUMS[$i-1]}
if [ $MIN -gt ${NUMS[$j]} ];then
NUMS[$i-1]=${NUMS[$j]}
NUMS[$j]=$MIN
fi
done
done
echo 从小到大排序:${NUMS[*]}
break
fi
elif [[ $N =~ ^[0-9]+$ ]];then
NUMS[$i]=$N
echo 已输入数字:${NUMS[*]}
echo 个数: ${
#NUMS[*]}
let i++
else
echo "您输入的不是数字,请重新输入。"
continue
fi
done
root@ubuntu2004:~# bash maopao.sh
请输入一个数字( e 结束输入,q 退出程序 ):11
已输入数字:11
个数: 1
请输入一个数字( e 结束输入,q 退出程序 ):587
已输入数字:11 587
个数: 2
请输入一个数字( e 结束输入,q 退出程序 ):674
已输入数字:11 587 674
个数: 3
请输入一个数字( e 结束输入,q 退出程序 ):2223
已输入数字:11 587 674 2223
个数: 4
请输入一个数字( e 结束输入,q 退出程序 ):1568
已输入数字:11 587 674 2223 1568
个数: 5
请输入一个数字( e 结束输入,q 退出程序 ):489413
已输入数字:11 587 674 2223 1568 489413
个数: 6
请输入一个数字( e 结束输入,q 退出程序 ):e
从小到大排序:11 587 674 1568 2223 489413
#降序排序
root@ubuntu2004:~# vim maopao2.sh
#!/bin/bash
#
#**********************************************************************************************
#Author: Raymond
#QQ: 88563128
#Date: 2021-10-22
#FileName: maopao2.sh
#URL: raymond.blog.csdn.net
#Description: The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
#!/bin/bash
while :
do
declare -a NUMS
read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
if [ $N == "q" ];then
break
elif [ $N == "e" ];then
L=${
#NUMS[*]}
if [ $L == 0 ];then
echo 没有数字。
elif [ $L == 1 ];then
echo 只有一个数字,无需排序。
else
for i in `seq $[L-1]`;do
for j in `seq $i $[L-1]`;do
MAX=${NUMS[$i-1]}
if [ $MAX -lt ${NUMS[$j]} ];then
NUMS[$i-1]=${NUMS[$j]}
NUMS[$j]=$MAX
fi
done
done
echo 从大到小排序:${NUMS[*]}
break
fi
elif [[ $N =~ ^[0-9]+$ ]];then
NUMS[$i]=$N
echo 已输入数字:${NUMS[*]}
echo 个数: ${
#NUMS[*]}
let i++
else
echo "您输入的不是数字,请重新输入。"
continue
fi
done
root@ubuntu2004:~# bash maopao2.sh
请输入一个数字( e 结束输入,q 退出程序 ):55
已输入数字:55
个数: 1
请输入一个数字( e 结束输入,q 退出程序 ):86
已输入数字:55 86
个数: 2
请输入一个数字( e 结束输入,q 退出程序 ):77896
已输入数字:55 86 77896
个数: 3
请输入一个数字( e 结束输入,q 退出程序 ):1548
已输入数字:55 86 77896 1548
个数: 4
请输入一个数字( e 结束输入,q 退出程序 ):1848
已输入数字:55 86 77896 1548 1848
个数: 5
请输入一个数字( e 结束输入,q 退出程序 ):e
从大到小排序:77896 1848 1548 86 55
62.将下图所示,实现转置矩阵matrix.sh
1 2 3 1 4 7
4 5 6 ==> 2 5 8
7 8 9 369
root@ubuntu2004:~# vim matrix.sh
#
#**********************************************************************************************
#Author: Raymond
#QQ: 88563128
#Date: 2021-10-22
#FileName: matrix.sh
#URL: raymond.blog.csdn.net
#Description: The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
declare -a matrix
echo 原始:
for i in `seq 3`
do
for j in `seq 3`
do
matrix[$i$j]=$[3*(i-1)+j]
echo -n ${matrix[$i$j]} ''
done
echo
done
echo -e "\n转换:"
for i in `seq 3`
do
for j in `seq $i`
do
x=${matrix[$i$j]}
matrix[$i$j]=${matrix[$j$i]}
matrix[$j$i]=$x
done
done
for i in `seq 3`
do
for j in `seq 3`
do
echo -n ${matrix[$i$j]} ''
done
echo
done
root@ubuntu2004:~# bash matrix.sh
原始:
1 2 3
4 5 6
7 8 9
转换:
1 4 7
2 5 8
3 6 9