shell脚本之数组的升降序排序,插入排序

  • 数组的定义和使用在上一篇博客中已经介绍过了,这篇博客主要是一些小案例,我一一列举出来给大家分享。
  • 数组定义和简单使用的博客地址:shell脚本之函数和数组

一、数组的升序排序

用户随意输一个数组,不局限数组长度,输出结果将数组升序排序

#脚本内容:
#!/bin/bash 
read -p "请输入你的数组长度:" num1      #先把用户输入的各个元素放入数组中
for i in `seq $num1`
do
    read -p "请输入$i个数:" num2
    array[$i-1]=$num2
done
echo ${array[*]} 
#--------------------下面排序-------------------------------------------
for((m=0;m<${#array[*]}-1;m++))
do
    for((n=0;n<${#array[*]}-1;n++))
        do
           if [[ ${array[n]} -gt ${array[n+1]} ]]
            then
                   num=${array[n]}          #num 作为一个中间存储量
                   array[n]=${array[n+1]}
                   array[n+1]=$num
            fi
        done
done
echo ${array[*]}
[root@node3 ~]# vim sort.sh
[root@node3 ~]# sh sort.sh
请输入你的数组长度:6
请输入1个数:45
请输入2个数:36
请输入3个数:75
请输入4个数:21
请输入5个数:43
请输入6个数:51
45 36 75 21 43 51
21 36 43 45 51 75

二、数组的降序排序

用户随意输一个数组,不局限数组长度,输出结果将数组降序排序

#脚本内容:
#!/bin/bash 
read -p "请输入你的数组长度:" num1
for i in `seq $num1`
do
    read -p "请输入$i个数:" num2
    array[$i-1]=$num2
done
echo ${array[*]} 
for((m=0;m<${#array[*]}-1;m++))
do
    for((n=0;n<${#array[*]}-1;n++))
        do
           if [[ ${array[n]} -lt ${array[n+1]} ]]
            then
                   num=${array[n]}
                   array[n]=${array[n+1]}
                   array[n+1]=$num
            fi
        done
done
echo ${array[*]}
[root@node3 ~]# sh sort.sh
请输入你的数组长度:6
请输入1个数:32
请输入2个数:63
请输入3个数:46
请输入4个数:75
请输入5个数:12
请输入6个数:33
32 63 46 75 12 33
75 63 46 33 32 12

三、数组的插入排序

用户想在一个数组中的某个元素后插入一个新的元素,最后进行排序

#!/bin/bash 
read -p "请输入一个数组:"
read -a array
echo "数组:${array[*]}"
len=${#array[*]}
read -p "你想在第几个数后插入,插入的数为:" m shu
ary=(${array[*]:0:$m} $shu ${array[*]:$m:$[$len-$m]})
echo "插入后的数组:${ary[*]}"
for((i=0;i<${#ary[*]}-1;i++))
do
    for((j=0;j<${#ary[*]}-1;j++))
        do
           if [[ ${ary[j]} -gt ${ary[j+1]} ]]
           then
                 num=${ary[j]}
                         ary[j]=${ary[j+1]}
                         ary[j+1]=$num
        fi
        done
done
echo "升序排序:${ary[*]}"
[root@node3 ~]# sh sort.sh
请输入一个数组:6
42 32 69 87 21 30   
数组:42 32 69 87 21 30
你想在第几个数后插入,插入的数为:2 10
插入后的数组:42 32 10 69 87 21 30
升序排序:10 21 30 32 42 69 87

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值