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