Bash : 冒泡排序
declare -a myArr=( )
=${myArr[$]=${myArr[$]=
return
}
=通过 <span style="color: #0000ff">for<span style="color: #000000"> 循环对数组排序,注意此时是以字符串来比较的
<span style="color: #0000ff">for (( <span style="color: #0000ff">last = $arrlen ; <span style="color: #0000ff">last > <span style="color: #800080">1 ; <span style="color: #0000ff">last--<span style="color: #000000"> ))
[[ -gt ]] && exchangeEle $i $((i+))
myArr=
# 从索引
获取数组的长度,并用来控制循环的次数。
n =<span style="color: #000000">${#myArr[@]} <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Start bubbling sort:<span style="color: #800000">"<span style="color: #0000ff">while [ <span style="color: #800000">"<span style="color: #800000">$n<span style="color: #800000">" -gt <span style="color: #800080">1 ] # 执行 n-<span style="color: #800080">1<span style="color: #000000"> 轮外部循环。 <span style="color: #0000ff">do<span style="color: #000000"> index=<span style="color: #800080">0<span style="color: #000000"> # 内部循环时的数组元素索引,在每轮循环开始之前需要重置。 <span style="color: #0000ff">while [ <span style="color: #800000">"<span style="color: #800000">$index<span style="color: #800000">" -lt $(<span style="color: #0000ff">expr $n - <span style="color: #800080">1<span style="color: #000000">) ] # 开始内部循环。 <span style="color: #0000ff">do <span style="color: #0000ff">if [[ ${myArr[$index]} > ${myArr[$(<span style="color: #0000ff">expr $index + <span style="color: #800080">1<span style="color: #000000">)]} ]] <span style="color: #0000ff">then<span style="color: #000000"> exchangeEle $index $(<span style="color: #0000ff">expr $index + <span style="color: #800080">1<span style="color: #000000">) # 交换数组元素位置。 <span style="color: #0000ff">fi<span style="color: #000000"> let <span style="color: #800000">"<span style="color: #800000">index += 1<span style="color: #800000">" <span style="color: #0000ff">done<span style="color: #000000"> # 内部循环结束。 let <span style="color: #800000">"<span style="color: #800000">n -= 1<span style="color: #800000">" # 外部循环计数减 <span style="color: #800080">1<span style="color: #000000">。 输出每轮排序后的结果。
<span style="color: #0000ff">done<span style="color: #000000"> # 外部循环结束。 <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Sorted data order:<span style="color: #800000">"
#!/bin/-定义函数 exchangeEle() 交换数组中两个元素的位置
exchangeEle() 使用临时变量保存数组元素
} declare -a myArr=(<span style="color: #800080">10 <span style="color: #800080">1 <span style="color: #800080">30 <span style="color: #800080">13 <span style="color: #800080">2 <span style="color: #800080">22<span style="color: #000000">)从索引<span style="color: #800080">0<span style="color: #000000"> 开始列出整个数组 <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">The order of the original data in the array:<span style="color: #800000">"<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">${myArr[*]}<span style="color: #800000">"<span style="color: #000000"> 获取数组的长度arrlen=<span style="color: #000000">${#myArr[@]} 通过 <span style="color: #0000ff">for<span style="color: #000000"> 循环对数组排序,注意此时是以字符串来比较的<span style="color: #0000ff">for (( <span style="color: #0000ff">last = $arrlen ; <span style="color: #0000ff">last > <span style="color: #800080">1 ; <span style="color: #0000ff">last--<span style="color: #000000"> )) <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Sorted data order as string:<span style="color: #800000">" 通过 <span style="color: #0000ff">for<span style="color: #000000"> 循环对数组排序,这次是作为整数来比较<span style="color: #0000ff">for (( <span style="color: #0000ff">last = $arrlen ; <span style="color: #0000ff">last > <span style="color: #800080">1 ; <span style="color: #0000ff">last--<span style="color: #000000"> )) <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Sorted data order as number:<span style="color: #800000">" myArr=<span style="color: #000000">(Ukraine Zaire Russia Yemen Syria 这里我们还使用转义符 将数组元素的值放在不同的行上,这样可以避免行中的内容过长。从索引 <span style="color: #800080">0<span style="color: #000000"> 开始列出整个数<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">The order of the original data in the array:<span style="color: #800000">" 获取数组的长度,并用来控制循环的次数。n=<span style="color: #000000">${#myArr[@]} <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Start bubbling sort:<span style="color: #800000">" 输出每轮排序后的结果。
<span style="color: #0000ff">done<span style="color: #000000"> # 外部循环结束。 <span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Sorted data order:<span style="color: #800000">"
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |