shell脚本编程之冒泡排序脚本实现(解释非常详细,涉及正则表达式)
admin
2023-02-24 21:00:05
0

shell脚本编程之冒泡排序脚本实现

​ 冒泡排序作为编程中最为基础的算法,对于计算机编程初学者而言是非常值得多研究和多多尝试编写的。对于编程而言,优劣的不是语言,而是实现功能的逻辑思维和突如其来的灵感。

​ 下面将给出使用shell实现冒泡排序的脚本,其中涉及的正则表达式需要细细理解。具体解释在下面的注释中有备注。

#!/bin/bash
#学习shell脚本过程中实现循环输入数生成数组,然后使用冒泡排序法进行从小到大排序
#Author:lokott
#Version: 3.1
#冒泡排序法的核心思想为:引入变量,两两比较,符合不动,反之互换
#脚本如下:
#等待用户输入
read -p "please input num of this array:" n
#下面是test语句判断输入的是否为数字,但是错误输出提示不友好,所以换为if
#[[ $n =~ ^[0-9]+$ ]]&&echo "welcome"||exit 1
if [[ $n =~ ^[0-9]+$ ]]
then
    echo "welcome"
else
    echo "sorry you input no a number!"
    exit 1
fi
#循环n次,等待用户输入数字,打印显示出数组内容
for i in `seq $n`
do
    read -p "please input your num:" num
    if [[ $num =~ ^[0-9]+$ ]];then :
    else
        echo "sorry you input no a number!"
        exit 1
    fi
    let i=i-1
array[$i]=$num
done
echo "原顺序的数组:"
echo ${array[*]}
#冒泡排序算法,核心在于下面的if语句,其实并不难理解,如果小时候玩过汉诺塔就非常好理解
#举一个简单的例子:如果你想将两杯不同果汁互换,就需要一个空杯子来作为中间媒介,这就类似于下面的temp变量
#该脚本实现的是从小到大排序,因此if判断的时候使用的是-gt;而且该脚本需要双重循环
#双重循环口诀:内层循环执行一遍,外层循环执行一次;结合下面的j和k,就是j=0开始执行,而一直等到k为n时才到j=2,以此类推。
#内层循环控制单次比较:即先比较第一个数与后面的所有的数进行比较,遇到比之小的与之替换,继续执行if(这里参与比较的变量就发生改变了)
for ((j=0;j<$n;j++))
do
    for((k=j+1;k<$n;k++))
    do
        if [[ ${array[$j]} -gt ${array[$k]} ]]
        then
            temp=${array[$j]}
            array[$j]=${array[$k]}
            array[$k]=$temp
        fi
    done
done
echo "进行排序之后的数组:"
echo ${array[*]}

# 下面是执行冒泡排序脚本的结果:
# [root@localhost ~]# ./test.sh 
# please input num of this array:5
# welcome
# please input your num:1
# please input your num:2
# please input your num:5
# please input your num:6
# please input your num:4
# 原顺序的数组:
# 1 2 5 6 4
# 进行排序之后的数组:
# 1 2 4 5 6

相关内容

热门资讯

今日重大通报“中至江西麻将.真... 今日重大通报“中至江西麻将.真的有挂吗?”太坑了原来有挂您好,中至江西麻将这个游戏其实有挂的,确实是...
最新引进“决战卡五星.怎么装挂... 您好:决战卡五星这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
玩家分享攻略“笑傲江湖.有没有... 有 亲,根据资深记者爆料笑傲江湖是可以开挂的,确实有挂(咨询软件无需打开...
玩家攻略科普“佛手在线.可以开... 家人们!今天小编来为大家解答佛手在线透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
终于明白“暗宝.怎么开挂?”其... 终于明白“暗宝.怎么开挂?”其实是有挂您好,暗宝这个游戏其实有挂的,确实是有挂的,需要了解加客服微信...
今日重大通报“闽乐茶楼.有没有... 网上科普关于“闽乐茶楼有没有挂”话题很是火热,小编也是针对闽乐茶楼作*弊开挂的方法以及开挂对应的知识...
勇救3名落水儿童的栾留伟牺牲后... 极目新闻记者 姚赟 曹雪娇2024年8月10日,年仅41岁的栾留伟为救三名落水儿童牺牲。得知这一消息...
【第一财经】“海贝大厅炸金花.... 【第一财经】“海贝大厅炸金花.究竟有挂吗?”详细开挂教程您好,海贝大厅炸金花这个游戏其实有挂的,确实...
最新引进“经典联盟牛牛.究竟有... 最新引进“经典联盟牛牛.究竟有挂吗?”透视曝光猫腻您好,经典联盟牛牛这个游戏其实有挂的,确实是有挂的...
今日重大通报“葫芦三娃.真的有... 有 亲,根据资深记者爆料葫芦三娃是可以开挂的,确实有挂(咨询软件无需打开...