linux shell脚本写一个冒泡程序
时间: 2024-05-14 22:17:19 浏览: 165
好的,以下是一个简单的冒泡排序的shell脚本:
```
#!/bin/bash
arr=(10 8 4 6 2)
len=${#arr[@]}
for ((i=0; i<$len; i++)); do
for ((j=0; j<$((len-i-1)); j++)); do
if [ ${arr[j]} -gt ${arr[$((j+1))]} ]; then
temp=${arr[j]}
arr[$j]=${arr[$((j+1))]}
arr[$((j+1))]=$temp
fi
done
done
echo ${arr[@]}
```
这个脚本定义了一个数组arr,并使用冒泡排序对其进行排序。具体来说,它使用两个嵌套的循环,外循环从0到数组长度减1,内循环从0到数组长度减外循环次数减1。在每次内循环中,如果当前元素比下一个元素大,则交换它们。最后,打印出排序后的数组。
相关问题
在linux上使用shell脚本编写冒泡排序
以下是在Linux上使用shell脚本编写冒泡排序的示例:
```shell
#!/bin/bash
# 定义数组
arr=(5 2 9 1 5 6)
# 计算数组长度
len=${#arr[@]}
# 冒泡排序
for (( i=0; i<$len-1; i++ ))
do
for (( j=0; j<$len-i-1; j++ ))
do
if (( ${arr[j]} > ${arr[j+1]} ))
then
# 交换元素位置
temp=${arr[j]}
arr[j]=${arr[j+1]}
arr[j+1]=$temp
fi
done
done
# 输出排序后的数组
echo ${arr[@]}
```
解释一下:
首先定义了一个数组 `arr`,然后计算数组长度 `len`。
接下来进行冒泡排序,外层循环控制排序轮数,内层循环控制每轮比较次数。如果相邻的元素大小关系不正确,则交换它们的位置。
最后输出排序后的数组。
4.编写shell脚本maopao.sh,放在个人家目录下。 功能:通过read命令监控输入,根据你想排序的位数,随机输入自己想要冒泡排序的数字,然后进行冒泡排序
好的,我明白了。以下是 `maopao.sh` 的脚本代码:
```bash
#!/bin/bash
# 监控输入,获取排序位数
echo "请输入排序位数:"
read n
# 随机输入数字,存储在数组中
echo "请输入 $n 个数字,用空格分隔:"
read -a arr
# 冒泡排序
for ((i=0; i<$n-1; i++))
do
for ((j=0; j<$n-i-1; j++))
do
if [ ${arr[j]} -gt ${arr[j+1]} ]
then
temp=${arr[j]}
arr[j]=${arr[j+1]}
arr[j+1]=$temp
fi
done
done
# 输出排序结果
echo "排序后的结果为:"
for ((i=0; i<$n; i++))
do
echo ${arr[i]}
done
```
你可以将该代码复制到一个文本编辑器中,保存为 `maopao.sh` 文件,然后在终端中运行该脚本即可。请注意,该脚本只能在 Linux / macOS 系统中运行。如果你使用的是 Windows 系统,可以尝试在 WSL 或 Cygwin 中运行该脚本。
阅读全文