我是靠谱客的博主 完美刺猬,最近开发中收集的这篇文章主要介绍SHELL脚本实现冒泡排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SHELL脚本实现冒泡排序

目标

将随机输入的一组数字按照顺序输出出来,使用冒泡算法。

实现思路

从最后面的数字依次和前面的数字比较大小,如果该数字比前面的数字小,则将两个数字换位置,直到最前面的数字。

实现步骤

  1. 将输入的数字存入数组之中,并且打印出来
  2. 判断输入的数字是否正确,如果不正确打印错误信息
  3. 然后使用两层循环:外循环是总共需要比较的数字;内层循环是每个数字比较的次数。
  4. 将排序后的数字打印出来

脚本

#!/bin/bash

#********************************************************************** 
#Date: 	        	2021-04-22
#Author:            xi_hope
#FileName:	    	bubblesort.sh
#Copyright (C): 	2021 All rights reserved
#**********************************************************************
declare -a nums
#声明数组
read -a  nums -p 'Please input numbers: '
#将输入的数字存入数组中
echo "You input numbers are "${nums[*]}""
#将输入的数字打印出来
[[ "${nums[*]}" =~ ^[0-9' ']*$ ]] || 
{ echo "Input incorrect!!!" ; exit ; }
#如果输入错误,提示报错
for ((i=${$nums[*]}-1; i>0; i--)) ; do
#外层循环,总共有多少个数字需要比较,应为总数减一次。比如一共输入了10个数字,一共
#有9个数字需要比较。
    for ((j=1; j<=i ; j++)) ; do
#内层循环,每个数字和前面的数字进行比较,比较的次数不大于总数减去该数字比较的次序。比
#如如果是第1个比较的数字,这个数需要和前面比较9(10-1)次;第2个比较的数字需要和前面
#比较8(10-2)次,依次类推。
        if [ ${nums[j]} -lt ${nums[j-1]} ] ; then
            temp=${nums[j]};
            nums[j]=${nums[j-1]};
            nums[j-1]=$temp;
        fi
# 如果该数字小于前面的数字,则两个数字换位置。
    done
done
echo "Sorted numbers are "${nums[*]}""
#打印出排序后的数字。

运行脚本

  • 执行此脚本
[root@Ubuntu2004 scripts]#bash bubblesort.sh
Please input numbers: 99 55 54 2 6 8 10
You input numbers are "99 55 54 2 6 8 10"
Sorted numbers are "2 6 8 10 54 55 99"
  • 故意输错查看效果
[root@Ubuntu2004 scripts]#bash bubblesort.sh
Please input numbers: 64 87 a :
You input numbers are "64 87 a :"
Input incorrect!!!

最后

以上就是完美刺猬为你收集整理的SHELL脚本实现冒泡排序的全部内容,希望文章能够帮你解决SHELL脚本实现冒泡排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部