【发布时间】:2013-11-19 22:18:50
【问题描述】:
def counting_sort(array, maxval):
"""in-place counting sort"""
m = maxval + 1
count = [0] * m # init with zeros
for a in array:
count[a] += 1 # count occurences
i = 0
for a in range(m): # emit
for c in range(count[a]): # - emit 'count[a]' copies of 'a' #CONFUSED
array[i] = a
i += 1
return array
print counting_sort( [1, 4, 7, 2, 1, 3, 2, 1, 4, 2, 3, 2, 1], 7 )
# prints: [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 7]
所以在上面的代码中,我不理解我用混淆标记的行,最后一行之前的 4 行。 可能是因为我是 python 新手或者只是愚蠢。
- 第一种情况发生了什么?当范围是 [ ] ? ... "对于空数组范围内的每个 c....?
- 我也没有得到
array[i] = a在下面的行。如果 a 是计数数组中可能为零的第一个元素,那么如何添加它......?真是一头雾水……
干杯!
【问题讨论】:
标签: python algorithm sorting counting