Я понимаю, что это не стандартная сортировка, как указано в CLRS, но чего не хватает моей упрощенной версии по сравнению со стандартной сортировкой?Я понимаю, что мои сортирует только положительные целые числа, но это должно быть довольно легко настроить (используя карты).
def count_sort(array):
maximum = max(array)
minimum = min(0, min(array))
count_array = [0]*(maximum-minimum+1)
for val in array:
count_array[val] += 1
sorted_array = []
for i in range(minimum, maximum+1):
if count_array[i] > 0:
for j in range(0, count_array[i]):
sorted_array.append(i)
return sorted_array
array = [3,2,-1,1,5,0,10,18,25,25]
print array
print count_sort(array)
Редактировать: Причина, по которой я думал, что это не стандартсортировка по счету была вызвана тем, что алгоритм, описанный в лекции MIT OpenCourseware, казался немного более сложным (http://youtu.be/0VqawRl3Xzs?t=34m54s).