概述
SHELL脚本实现冒泡排序
目标
将随机输入的一组数字按照顺序输出出来,使用冒泡算法。
实现思路
从最后面的数字依次和前面的数字比较大小,如果该数字比前面的数字小,则将两个数字换位置,直到最前面的数字。
实现步骤
- 将输入的数字存入数组之中,并且打印出来
- 判断输入的数字是否正确,如果不正确打印错误信息
- 然后使用两层循环:外循环是总共需要比较的数字;内层循环是每个数字比较的次数。
- 将排序后的数字打印出来
脚本
#!/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脚本实现冒泡排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复