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

相关内容

热门资讯

“725上凯道游行”靠游览车动... 海峡导报综合报道 国民党全代会今天(25日)上午登场,紧接着下午即进行“725反毒油凯道抗议游行”。...
超过阿里巴巴和美团,携程为何挨... 2026年7月,市场监管总局对携程集团有限公司滥用市场支配地位行为作出行政处罚决定,责令携程停止违法...
夺取全年粮食丰收有较好基础(权... 本报记者 郁静娴“农业农村经济保持稳中向好的良好势头,为国民经济延续总体平稳、向新向优的态势提供有力...
山西洪洞发生黄土崩塌,致5人死... 今天(25日)上午,记者从山西省洪洞县应急管理局获悉,洪洞县好义村黄土崩塌受困人员已全部找到。其中,...
瑞尔塔完成核聚变装置内直接能量... (来源:电力国际汇epintl) 六月早些时候,《聚变能源报道》曾刊发过瑞尔塔聚变公司(Realta...
中海油服获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示中海油服(601808)新获得一项发明专利授权,专利名为“一种...
特朗普:301关税正式接棒,已... 据凤凰卫视报道,特朗普24日在白宫回应多项议题,强调最高法院推翻旧关税法源后,政府已改采新的法律依据...
夫妇雨天出门疑被电身亡,现场有... 7月24日,新京报记者多方核实获悉,陕西宝鸡永清村22日晚突发雷暴雨,一对中年夫妇雨天在村中道路疑被...
游戏掌机存储卡推荐:三星 T7... 当游戏加载条变短、4K视频秒录、掌机库一键随行——存储不该是妥协的理由。 三星T7,1TB大容量m...
宇树科技创始人兼CEO王兴兴登... 王兴兴登上时代封面。 当地时间7月23日,宇树科技创始人兼CEO王兴兴与其载人机甲产品GD01共同登...