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 или просто глуп.Синтаксис/понимание Python
- Что происходит в первом случае? Когда диапазон []? ... "для каждого c в диапазоне пустого массива ....?
- i dont get
array[i] = a
на строке под а также. Если a - первый элемент в массиве подсчета, который может быть равен нулю, как это может быть добавлены ....? Действительно запуталась ...
Ура!