Python - 数组排序


Python 的 array 模块定义了数组类。数组类的对象类似于 Java 或 C/C++ 中的数组。与内置的 Python 序列不同,数组是字符串、整数或浮点对象的同质集合。

数组类没有任何函数/方法来给出其元素的排序排列。但是,我们可以通过以下方法之一来实现它 -

  • 使用排序算法

  • 使用 List 中的 sort() 方法

  • 使用内置的sorted()函数

让我们详细讨论每种方法。

使用排序算法

我们将实现经典的冒泡排序算法来获得排序后的数组。为此,我们使用两个嵌套循环并交换元素以按排序顺序重新排列。

使用 Python 代码编辑器保存以下代码 -

import array as arr
a = arr.array('i', [10,5,15,4,6,20,9])
for i in range(0, len(a)):
   for j in range(i+1, len(a)):
      if(a[i] > a[j]):
         temp = a[i];
         a[i] = a[j];
         a[j] = temp;
print (a)

它将产生以下输出-

array('i', [4, 5, 6, 9, 10, 15, 20])

使用列表中的 sort() 方法

尽管 array 没有sort()方法,但 Python 的内置 List 类确实有 sort 方法。我们将在下一个示例中使用它。

首先,声明一个数组并使用tolist()方法从中获取一个列表对象-

a = arr.array('i', [10,5,15,4,6,20,9])
b=a.tolist()

我们可以轻松获得排序列表,如下所示 -

b.sort()

我们需要做的就是将此列表转换回数组对象 -

a.fromlist(b)

这是完整的代码-

from array import array as arr
a = arr.array('i', [10,5,15,4,6,20,9])
b=a.tolist()
b.sort()
a = arr.array('i')
a.fromlist(b)
print (a)

它将产生以下输出-

array('i', [4, 5, 6, 9, 10, 15, 20])

使用内置的sorted()函数

对数组进行排序的第三种技术是使用sorted() 函数,它是一个内置函数。

Sorted()函数的语法如下-

sorted(iterable, reverse=False)

该函数返回一个新列表,其中包含可迭代对象中按升序排列的所有项目。将反向参数设置为 True 以获取项目的降序排列。

Sorted() 函数可以与任何可迭代对象一起使用。Python 数组是一个可迭代对象,因为它是一个索引集合。因此,数组可以用作sorted()函数的参数。

from array import array as arr
a = arr.array('i', [4, 5, 6, 9, 10, 15, 20])
sorted(a)
print (a)

它将产生以下输出-

array('i', [4, 5, 6, 9, 10, 15, 20])