问题描述
我正在用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 (将#修改为@)