Python - 数组排序



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

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

  • 使用排序算法

  • 使用列表的 sort() 方法

  • 使用内置的 sorted() 函数

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

Python Array Sorting

使用排序算法对数组排序

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

示例

使用 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 的内置 列表 类确实有 sort 方法。我们将在下一个示例中使用它。

首先,声明一个数组并使用 tolist() 方法从中获取一个列表对象。然后,使用 sort() 方法获取排序后的列表。最后,使用排序后的列表创建另一个数组,该数组将显示排序后的数组。

示例

以下代码显示了如何使用 sort() 方法获取排序后的数组。

import array as arr

# creating array
orgnlArray = arr.array('i', [10,5,15,4,6,20,9])
print("Original array:", orgnlArray)
# converting to list 
sortedList = orgnlArray.tolist()
# sorting the list
sortedList.sort()

# creating array from sorted list
sortedArray = arr.array('i', sortedList)
print("Array after sorting:",sortedArray)

以上代码将显示以下输出:

Original array: array('i', [10, 5, 15, 4, 6, 20, 9])
Array after sorting: array('i', [4, 5, 6, 9, 10, 15, 20])

使用 sorted() 方法对数组排序

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

sorted() 函数的语法如下:

sorted(iterable, reverse=False)

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

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

示例

在这个例子中,我们将看到 sorted() 方法在对数组排序中的用法。

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])
广告