Linux 实现十位数排序方法
更新:HHH   时间:2023-1-7


列举前四位数组的升序排序
4 5 2 6
if 4 大于 5 ;那么就将4和五的位置进行调换(此处不大于无作为),拿第二个数和三个数作比较,if 5 大于 2 那么temp=5 5=2 2=temp;得到:4 2 5 6 ;继续拿第四个数和第五个数做比较,if 2 大于 6 那么位置调换(无作为)。
此时得到4 2 5 6;上述循环做四次保证每一个数都能进行比较 这里简写:
if 4>2 ;then temp=4 4=2 2=temp; 得到 2 4 5 6,第二位和第三位 if 4>5;then 调换位置; 第三位和第四位  if 5 >6;then 调换位置 。
以下是具体的shell脚本:
#!/bin/bash
declare -a rand
declare -i temp
declare -i i
for i in {0..9};do
rand[$i]=$RANDOM
done
#上述步骤获取十个随机数保存至rand数组;
#//获得数组个数,数组从0开始所有要减一:${#rand[]}-1;
#第一轮为循环控制要进行多少伦比较,第二轮循环进行数的比较依次和下一个数进行比较;第二轮循环做一轮只能将一个数比较出来所以要做(数组个伦比较)才能将顺序排序;
for ((j=0;j<${#rand[]}-1;j++)); do
for ((k=0;k<${#rand[*]}-1;k++)); do
if [[ ${rand[$k]} -lt ${rand[$k+1]} ]];then
temp=${rand[$k]}
rand[$k]=${rand[$k+1]}
rand[$k+1]=$temp
fi
done
done

echo "${rand[*]}"

返回开发技术教程...