shell 脚本中一个简单的冒泡排序算法
2016-10-26 00:00
204 查看
下面分享一个用shell脚本写的冒泡排序
1 代码如下:
2 验证
3 开发过程中需要注意的地方
for 循环中循环范围不可以使用变量,但是可以用seq 使用变量,比如:
注意:上面的逻辑是编程思维。在shell中有非常简单的工具
1 代码如下:
[root@wzlvm myshell]# cat test_paixu_sh.sh #!/bin/bash # # # # Aut wangzilong # Shell Document # 定义一个变量,在下面的while循环中自增,来指定数组的索引 i=0 # 获取参数个数 来确定从哪一个数组元素比较 num=$# # while 循环 如果参数个数不等于0 获取参数并加入数组中 while [ $# -ne 0 ] do arr[$i]=$1 i=$[i+1] shift done # 确定从谁开始比较 num_a2=0 for a in ${arr[*]} do # 确定从哪一个开始被比较 num_b=$num for b in ${arr[*]} do # 进入内循环开始比较之前位置索引要键1,比如参数7 个,那数组最后一个索引是6要小1 num_b=$[num_b-1] # 判断比较索引是否小于被比较索引,如果小于才需要比较,否则已经不需要比较了 if [ $num_a2 -lt $num_b ];then # 进入比较阶段,比较和被比较索引位置的数组元素是否小于 if [ ${arr[$num_b]} -lt ${arr[$num_a2]} ];then # 如果小于,互换 tmp=${arr[$num_b]} arr[$num_b]=${arr[$num_a2]} arr[$num_a2]=$tmp fi fi done # 内循环比较一圈后 比较元素索引加1,进入下一个比较 num_a2=$[num_a2+1] done # 遍历排序完成的数组 for last in ${arr[*]} do echo $last done # 总结:由于shell 脚本中for循环的循环上下范围不可以使用变量,所以只能用自定义的自增变量比较大小来决定是否需要比较数组元素大小
2 验证
[root@wzlvm myshell]# sh test_paixu_sh.sh 9 3 1 8 4 5 0 0 1 3 4 5 8 9 [root@wzlvm myshell]# sh test_paixu_sh.sh 3 1 2 1 2 3
3 开发过程中需要注意的地方
for 循环中循环范围不可以使用变量,但是可以用seq 使用变量,比如:
[root@wzlvm myshell]# num=5 [root@wzlvm myshell]# seq 1 $num 1 2 3 4 5 [root@wzlvm myshell]# tmp=`seq 1 $num` [root@wzlvm myshell]# echo $tmp 1 2 3 4 5 # 上面可以自动遍历,但是无法像属组一样指定某一个元素进行计算或比较 [root@wzlvm myshell]# seq 1 1 10 1 2 3 4 5 6 7 8 9 10 # 上面中间的1 指的是部长,比如下面: [root@wzlvm myshell]# seq 1 2 10 1 3 5 7 9 # 默认都是从小到大的升序,如下倒序排列就不行: [root@wzlvm myshell]# seq 10 1 1 [root@wzlvm myshell]# # 但是我们可以改变步长为-2 来解决排倒序的问题,如下: [root@wzlvm myshell]# seq 10 -2 1 10 8 6 4 2
注意:上面的逻辑是编程思维。在shell中有非常简单的工具
相关文章推荐
- 编写一个简单的SHELL脚本
- 一个简单的防CC攻击Shell脚本分享
- shell跑一个PHP脚本的简单命令
- 一个简单的SHELL脚本模板
- 一个简单的shell脚本
- 用shell写一个简单的脚本
- shell脚本生成一个简单的计算器
- Linu Shell 编程基础--一个简单的Shell脚本
- 如何DIY一个简单的反弹Shell脚本
- 一个备份MySQL数据库的简单Shell脚本
- 一个备份MySQL数据库的简单Shell脚本
- 分享高通平台刷版本简单的一个shell脚本
- 一个简单的加密解密方法(java、shell脚本)
- 一个典型的简单shell字符串处理脚本
- 一个备份MySQL数据库的简单Shell脚本(转)
- 写了一个简单的shell脚本监控mysql服务器运行状态
- 一个备份MySQL数据库的简单Shell脚本
- 一个简单的转换输出的shell脚本代码
- 4000 一个简单的监控mysql服务的shell脚本
- 一个备份MySQL数据库的简单Shell脚本