Python - 对数组进行排序



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

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

  • 使用排序算法
  • 使用 List 中的 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])

使用 list 的 sort() 方法对数组进行排序

即使 array 模块没有 sort() 方法,Python 的内置 List 类也确实有一个 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)

该函数返回一个新列表,其中包含 iterable 中的所有项目,按升序排列。将 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])