无法理解问题:计数排序实施错误

问题描述

我正在用python实现计数排序。这是我要排序的数组arr = [3,9,6,3,3]。 这是我的实现:

def counting_sort(arr):
  seen = [0] * len(arr)
  srt = [0] * len(arr)
  for i in range(len(arr)):
    seen[arr[i]] = seen[arr[i]] + 1
  for i in range(1,len(seen)):
    seen[i] = seen[i] + seen[i-1]
  for i in range(len(seen)-1,-1):
    seen[i] = seen[i-1] 

  seen[0] = 0
  for i in range(len(arr)):
    srt[seen[arr[i]]] = arr[i]
    seen[arr[i]] = seen[arr[i]] + 1
  
  return srt

调用函数时,会发生此错误

<ipython-input-52-ecb3f0b1feb3> in <module>()
----> 1 ans = counting_sort(arr)
      2 print(ans)

<ipython-input-51-2df8decd0164> in counting_sort(arr)
      9   srt = [0] * len(arr)
     10   for i in range(len(arr)):
---> 11     seen[arr[i]] = seen[arr[i]] + 1
     12   for i in range(1,len(seen)):
     13     seen[i] = seen[i] + seen[i-1]

IndexError: list index out of range

为什么会这样?注意:当我给这个arr = [1,1,1]时,该功能可以正常工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)