对变量的理解:数组排序

写一个脚本,生成0-16中10个随机数(可重复)放到一个数组中,再将该数组中的元素从小大到排序进行输出。

#!/bin/bash
for i in {0..9};do
        random_nums[i]=$[$RANDOM % 17]
done
echo ${random_nums[*]}

#上面程序生成了0到16中随机10个数字(可重复)的数组。

#下面程序对这个数组进行从小到大排序。

exchange=0
for i in {0..8};do
        for((j=$i+1;j<=9;j++)) ;do
                if [ ${random_nums[$j]} -lt ${random_nums[$i]} ];then
                        exchange=${random_nums[$i]}
                        random_nums[$i]=${random_nums[$j]}
                        random_nums[$j]=$exchange
                fi
        done
done  

#总共九次循环:
--------第一次循环将左边第一个位置作为固定对换位,从左边第一个数跟左边第二个数比较开始,谁小就换到左边第一个位置,直到右边最后一个数,于是将数组中最小的一个数换到了左边第一个位置。
--------第二次循环将左边第二个位置作为固定对换位,从左边第二个数跟第三个数比较开始,谁小就换到左边第二个位置,直到右边最后一个数,于是将数组中第二小的数换到了左边第二个位置。
--------同理,以后第三到第八次循环,将数组前八小的数从小到大,从左到右排列好了。
--------第九次循环,即最后一次,将数组中剩下的两个数再进行比较对换成从小到大顺序。整个数组就排好了。10个数只需要九次循环进行对换排序。

echo ${random_nums[*]}

#最后打印排序后的数组。

通过编写这种对换变量数值对数组排序的程序,能够帮助我们对于计算机程序和变量的理解:
1、变量是跟数值链接在一起的一个固定的程序结构,它不是数值。
2、一个变量同时只能链接一个值。
3、变量链接的值可以通过程序变换,从上一个值转为下一个值。
4、变量和值的链接关系,确实相当程度上模拟了现实人们中的逻辑思维。在逻辑推理演算当中,一个逻辑主体是不会改变的(比如张三、李四…),但是它的值(比如身高、年龄、住址)却可以发生改变。总之,现实中人们对事物的认识,理解而产生的概念(比如名称、数值、整体、部分)之间确实存在着复杂的联系,计算机程序当中的变量、变量名、变量链接的数值,这三者和其他加在一起,可以适当模拟这种复杂的联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值