Bash   发布时间:2019-11-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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"> ))
<span style="color: #0000ff">do
<span style="color: #0000ff">for (( i = <span style="color: #800080">0 ; i < <span style="color: #0000ff">last - <span style="color: #800080">1 ; i++<span style="color: #000000"> ))
<span style="color: #0000ff">do<span style="color: #000000">
[[ <span style="color: #800000">"<span style="color: #800000">${myArr[$i]}<span style="color: #800000">" > <span style="color: #800000">"<span style="color: #800000">${myArr[$((i+1))]}<span style="color: #800000">" ]] && exchangeEle $i $((i+<span style="color: #800080">1<span style="color: #000000">))
<span style="color: #0000ff">done
<span style="color: #0000ff">done

Bash : 冒泡排序

[[ -gt ]] && exchangeEle $i $((i+))

》一文。

title="Bash : 冒泡排序" alt="Bash : 冒泡排序" src="https://cn.js-code.com/res/2019/02-09/09/585df28e4bfbb1c58abded0a540da5f0.png" >

801_58@myArr=Tina Nicaragua Japan Mexico Venezuela Greece England)

801_58@# 从索引 {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">。

输出每轮排序后的结果。

@H_801_58@</span><span style="color: #0000ff"&gt;echo</span> <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;${myArr[*]}</span><span style="color: #800000"&gt;"</span>

<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">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">${myArr[*]}<span style="color: #800000">"

只不过是写法有一点点不同。为了显示排序的过程,这次输出了每轮排序后的中间结果:

title="Bash : 冒泡排序" alt="Bash : 冒泡排序" src="https://cn.js-code.com/res/2019/02-09/09/b6328d3060390c9eaa35bfa892ee5406.png" >

代码:

801_58@#!/bin/描述如下: # 通过连续的比较对数组中的元素进行排序 # 比较两个相邻的元素,如果顺序不对,就交换这两个元素的位置 # 当第一轮比较结束之后,最 -定义函数 exchangeEle() 交换数组中两个元素的位置

exchangeEle()
{

使用临时变量保存数组元素

@H_801_58@local temp</span>=${myArr[$<span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;]} # 交换元素的位置 myArr[$</span><span style="color: #800080"&gt;1</span>]=${myArr[$<span style="color: #800080"&gt;2</span><span style="color: #000000"&gt;]} myArr[$</span><span style="color: #800080"&gt;2</span>]=<span style="color: #000000"&gt;$temp return

}

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">do
<span style="color: #0000ff">for (( i = <span style="color: #800080">0 ; i < <span style="color: #0000ff">last - <span style="color: #800080">1 ; i++<span style="color: #000000"> ))
<span style="color: #0000ff">do<span style="color: #000000">
[[ <span style="color: #800000">"<span style="color: #800000">${myArr[$i]}<span style="color: #800000">" > <span style="color: #800000">"<span style="color: #800000">${myArr[$((i+1))]}<span style="color: #800000">" ]] && exchangeEle $i $((i+<span style="color: #800080">1<span style="color: #000000">))
<span style="color: #0000ff">done
<span style="color: #0000ff">done

<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">echo <span style="color: #800000">"<span style="color: #800000">${myArr[*]}<span style="color: #800000">"<span style="color: #000000">

通过 <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">do
<span style="color: #0000ff">for (( i = <span style="color: #800080">0 ; i < <span style="color: #0000ff">last - <span style="color: #800080">1 ; i++<span style="color: #000000"> ))
<span style="color: #0000ff">do<span style="color: #000000">
[[ <span style="color: #800000">"<span style="color: #800000">${myArr[$i]}<span style="color: #800000">" -gt <span style="color: #800000">"<span style="color: #800000">${myArr[$((i+1))]}<span style="color: #800000">" ]] && exchangeEle $i $((i+<span style="color: #800080">1<span style="color: #000000">))
<span style="color: #0000ff">done
<span style="color: #0000ff">done

<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">Sorted data order as number:<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">

@H_821_0@myArr
=<span style="color: #000000">(Ukraine Zaire Russia Yemen Syria \
ArgenTina Japan Mexico GreecE)

这里我们还使用转义符 \ 将数组元素的值放在不同的行上,这样可以避免行中的内容过长。

从索引 <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">

获取数组的长度,并用来控制循环的次数。

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">。

输出每轮排序后的结果。

@H_801_58@</span><span style="color: #0000ff"&gt;echo</span> <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;${myArr[*]}</span><span style="color: #800000"&gt;"</span>

<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">"
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">${myArr[*]}<span style="color: #800000">"

考:

大佬总结

以上是大佬教程为你收集整理的Bash : 冒泡排序全部内容,希望文章能够帮你解决Bash : 冒泡排序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: