千家信息网

shell脚本编程之冒泡排序脚本实现(解释非常详细,涉及正则表达式)

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,shell脚本编程之冒泡排序脚本实现​ 冒泡排序作为编程中最为基础的算法,对于计算机编程初学者而言是非常值得多研究和多多尝试编写的。对于编程而言,优劣的不是语言,而是实现功能的逻辑思维和突如其来的灵感
千家信息网最后更新 2025年02月16日shell脚本编程之冒泡排序脚本实现(解释非常详细,涉及正则表达式)

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 1if [[ $n =~ ^[0-9]+$ ]]then    echo "welcome"else    echo "sorry you input no a number!"    exit 1fi#循环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-1array[$i]=$numdoneecho "原顺序的数组:"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    donedoneecho "进行排序之后的数组:"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
0