迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

在 Bash 中排序数组

作者:迹忆客 最近更新:2023/05/16 浏览次数:

对数组进行排序对于任何编程语言来说都是一项非常常见的任务。 在 Bash 脚本中,我们还可以通过两种不同的方式完成此任务。

第一个使用任何排序算法,第二个使用 Bash 脚本中名为 readarray 的内置关键字。 本文将展示我们如何在 Bash 脚本中对数组进行排序。

此外,我们将看到一些带有解释的示例,以使主题更容易理解。


在 Bash 中使用冒泡排序对数组进行排序

在 Bash 脚本中,您可以使用任何排序算法(如冒泡排序、合并排序等)对数组进行排序。在我们下面的示例中,我们实现了冒泡排序来对数组进行排序。

我们示例的代码如下所示。

MyArray=(9 8 20 10 15)

echo "The original array is:"
echo ${MyArray[*]}

# We implemented the bubble sort here.
for ((i = 0; i<5; i++))
do

    for((j = 0; j<5-i-1; j++))
    do

        if [ ${MyArray[j]} -gt ${MyArray[$((j+1))]} ]
        then
            # swap
            temp=${MyArray[j]}
            MyArray[$j]=${MyArray[$((j+1))]}
            MyArray[$((j+1))]=$temp
        fi
    done
done

echo "The sorted array is:"
echo ${MyArray[*]}

让我们逐行解释上面的例子。

  1. 首先,我们声明了一个名为 MyArray 的数组。
  2. 之后,我们通过 echo ${MyArray[*]} 行显示数组。
  3. 之后,我们创建了两个循环并实现了冒泡排序。 在这些循环中,我们创建了一个条件来判断当前元素是否大于下一个元素。
  4. 如果条件成立,那么我们在数组的这两个元素之间执行交换操作。
  5. 最后,我们只是在排序完成后显示数组。 当您运行上面的程序时,您将得到如下所示的输出。
The original array is:
9 8 20 10 15
The sorted array is:
8 9 10 15 20

在 Bash 中使用 readarray 关键字对数组进行排序

假设您有一个包含字母和数字字符混合的数组。 要对这个数组进行排序,您需要找到不同的方法。

要对该数组进行排序,需要比较字符的 ASCII 值。

Bash 脚本中的内置关键字使您只需一行代码即可完成此操作。 关键字是readarray。

在下面的示例中,我们创建了一个组合字母和数字字符的数组。 在我们使用 readarray 关键字对数组进行排序后,我们显示排序后的数组。

我们示例的代码如下所示。

MyArray=(n a c b 6 7 5)
readarray -t MyArray < <(printf '%s\n' "${MyArray[@]}" | sort)
echo "The sorted list is: ${MyArray[*]}"

执行脚本后,您将获得如下所示的输出。

The sorted list is: 5 6 7 a b c n

请注意 ,本文中使用的所有代码都是用 Bash 编写的。 它只会在 Linux Shell 环境中工作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便