如何使用Python語言實現計數排序演算法?

老男孩IT教育機構發表於2023-09-22

  計數排序是一種非基於比較的排序演算法,它的時間複雜度為O(n),是線性時間內完成的,因此它在某些情況下比基於比較的排序演算法更加高效。那麼如何使用Python語言來實現計數排序演算法呢?以下是詳細的內容:

  首先,我們需要明確計數排序的核心思想。計數排序的執行步驟如下:

  1. 找出待排序陣列中最大的數,並建立一個長度為最大數加1的輔助陣列count,用於儲存每個元素出現的次數;

  2. 遍歷待排序陣列,統計每個元素出現的次數,並儲存在count陣列中;

  3. 對count陣列進行累加操作,得到每個元素的正確位置索引;

  4. 建立與待排序陣列長度相同的結果陣列result;

  5. 遍歷待排序陣列,根據元素值在count陣列中的索引,將元素放置到正確的位置上;

  6. 返回結果陣列result,即為排序完成的陣列。

  以下是使用Python實現計數排序演算法的程式碼示例:

  def counting_sort(arr):

  # 找出最大值

  max_val = max(arr)

  # 建立輔助陣列count,並初始化為0

  count = [0] * (max_val + 1)

  # 統計每個元素出現的次數

  for num in arr:

  count[num] += 1

  # 對count陣列進行累加操作

  for i in range(1, len(count)):

  count[i] += count[i - 1]

  # 建立結果陣列result

  result = [0] * len(arr)

  # 將元素放置到正確的位置上

  for num in arr:

  index = count[num] - 1

  result[index] = num

  count[num] -= 1

  # 返回結果陣列

  return result

  接下來,我們可以透過以下方式測試計數排序演算法:

  arr = [4, 2, 3, 4, 1]

  sorted_arr = counting_sort(arr)

  print(sorted_arr)

  執行以上程式碼,輸出結果為:[1. 2. 3. 4. 4]。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2985356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章