9*9乘法表

方法一:
#!/bin/bash
declare -i i=1
declare -i j=1
declare -i count=10

while [ $i -lt $count ];do
 for ((j=1;j<=$i;j++));do
  echo -ne "$j*$i=$(($j*$i))\t"
  if [ $j -eq $i ];then
  echo -e '\r'
  fi
 done
i=`expr $i + 1`
done

方法二:

#!/bin/bash
let j=1
while (($j<10))
do
 i=1
 while (($i<=$j))
 do 
   echo -n "$i*$j=$(($i*$j)) "
   if [ $i -eq $j ]
     then
  echo " "
     else
  :
   fi
   let "i=i+1"
 done
 let "j=j+1"
done

方法三:

#!/bin/bash
declare -i i=1
declare -i j=1
declare -i sum=9

for ((i=1;i<=sum;i++));do
  for ((j=1;j<=i;j++));do
     if [ $i -eq $j ];then
     echo -e "$j*$i=$(($j*$i))"
     else
     echo -en "$j*$i=$(($j*$i))\t"
     fi
  done
done
注意:

***************************************************************************************

[oracle@sor-sys zy]$ echo -en "haha\nhuhu\r"
haha
[oracle@sor-sys zy]$ echo -e "haha\nhuhu"
haha
huhu
[oracle@sor-sys zy]$ echo -en "haha\nhuhu"
haha
huhu[oracle@sor-sys zy]$ echo -n "haha\nhuhu"
haha\nhuhu[oracle@sor-sys zy]$echo "haha\nhuhu"
haha\nhuhu
[oracle@sor-sys zy]$ 

***************************************************************************************

测试结果:

[root@sor-sys zy]# sh new9.sh 
1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

(二)冒泡算法

我们有这样一个问题,排列组合,如下:

#!/bin/bash
a=(12 6 89 48 2)

array(){
for ((i=0;i<=4;i++));do
  if [ ${a[$i+1]} -lt ${a[$i]} ];then
   tmp2=${a[$i]}
   tmp1=${a[$i+1]}
   a[$i+1]=$tmp2
   a[$i]=$tmp1
  fi
done
}

if [ ${a[0]} -gt ${a[4]} ];then
   old=${a[0]}
   little=${a[4]}
   a[0]=$little
   a[4]=$old
#  array
  array
else
  array
fi

echo ${a[*]}

之前这样写过,但是老是出现问题,然后问了同事才知道不是语法错误,是逻辑错误,例如左边的这个数会和右边的比较

当第四个和第五个比较的完的时候,第五和还会和第六个比较,但是第六个元素是不存在的,所以就会报错~

测试如下:

[root@Test230 test]# sh -n array.sh 【语法木有错误(⊙o⊙)哦~】

[root@Test230 test]# sh array.sh 
array.sh: line 6: [: -lt: unary operator expected
2 6 48 12 89

下面就是冒泡算法了,呵呵~

#!/bin/bash
values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)
num=${#values[*]}
echo Before:
echo ${values[*]}

for ((i=0;i<num;i++));do
   lowest=$i
 for ((j=i+1;j<num;j++));do
  if [ ${values[j]} -le ${values[lowest]} ];then
   lowest=$j
  fi
    temp=${values[i]}
    values[i]=${values[lowest]}
    values[lowest]=$temp
 done
done

echo After:
echo ${values[*]}

[root@Test230 test]# sh array.sh 
Before:
39 5 36 12 9 3 2 30 4 18 22 1 28 25
After:
1 2 3 4 5 9 12 22 18 25 28 30 36 39


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值