Shell冒泡排序原理和算法

算法原理

冒泡排序的原理(以递增序为例)是每次从头开始依次比较相邻的两个元素,如果后面一个元素比前一个要大,说明顺序不对,则将它们交换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成。

由于冒泡排序简洁的特点,它通常被用来对于计算机程序设计入门的学生介绍算法的概念。

具体操作过程

第一种方法

#!/bin/bash
# 冒泡排序
score=(70 10 40100 5 60)
for ((i=1;i<s{#score[*]};i++))
do
    for ((j=0; j<${#score[*]}-$i;j++))
    do
        if [ ${score[j]} -gt ${score[$(($j+1))]} ]
        then temp=${score[j]}
        score[j]=${score[$(($j+1))]}
        score[$(($j+1))]=$temp
        fi
    done
done
echo ${score[*]}

第二种方法
键盘输入冒泡排序

#!/bin/ bash
#键盘输入冒泡排序
k=0
while true
do
   read -p "是否需要输入数值? " do
   if [ $do  == "no"]
   then break
   fi
   read -p "请输入第$(($k+1))个元素" key
   score[$k]=$key
   let k++
done
for ((i=1; i<${#score[*]};i++)) 
do
    for ((j=0;j<${#score[*]}-$i;j++))
    do
        if [ ${score[j]} -gt ${score[j+1]} ]
        then temp=${score[j]}
             score[j]=${score[$(($j+1))]}
             score[$(($j+1))]=$temp
        fi
    done
done
echo ${score[*]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值