shell编程实现冒泡、选择、插入排序

我正在上Linux实用技术这门课,然后最后的实验是
在这里插入图片描述
我选择了冒泡选择插入这三种相对简单的。

各种算法的具体描述可以参考一下 https://www.cnblogs.com/onepixel/articles/7674659.html

ok接下来的各个代码

冒泡排序:

#!/bin/bash
echo "input a number list"
read -a arr
for (( i=0;i<${#arr[@]};i++ ))
do
for ((j=0;j<${#arr[@]}-1;j++ ))
do
if [[ ${arr[j]} -gt ${arr[j+1]} ]];
then
tmp=${arr[j]}
arr[j]=${arr[j+1]}
arr[j+1]=$tmp
fi
done
done
echo "end:"
echo ${arr[@]}

选择排序:

#!/bin/bash
echo "input a number list"
read -a arr
for (( i=0;i<${#arr[@]}-1;i++ ))
do
m=i
for ((j=i+1;j<${#arr[@]};j++ ))
do
if [[ ${arr[j]} -lt ${arr[m]} ]];
then
m=j
fi
done
tmp=${arr[i]}
arr[i]=${arr[m]}
arr[m]=$tmp
done
echo "end:"
echo ${arr[@]}

插入排序:(这个我网上找了好久,结果出来的都是shell排序= =)

#!/bin/bash
echo "input a number list"
read -a arr
for (( i=1;i<${#arr[@]};++i ))
do
for (( j=i;j>0;--j ))
do
if (( ${arr[j]}<${arr[j-1]} ))
then
temp=${arr[j]}
arr[j]=${arr[j-1]}
arr[j-1]=$temp
else
break
fi
done
done
echo "end:"
echo ${arr[@]}

应该没错的吧,如果有错希望大家指出来

猜你喜欢

转载自blog.csdn.net/weixin_43173093/article/details/89480112
今日推荐