def count_sort(nums):
min, max = nums[0], nums[0]
for i in range(1, len(nums)):
if (nums[i] > max):
max = nums[i]
elif (nums[i] < min):
min = nums[i]
sum = max - min + 1
count = [0] * sum
for i in range(len(nums)):
count[nums[i] - min] += 1
pos = 0
for i in range(len(count)):
for j in range(count[i]):
nums[pos] = min + i
pos += 1
return nums
if __name__ == '__main__':
nums = [1, 3, 3, 3, 6, 8, 5, 5, 7, 2, 4, 6]
print(count_sort(nums))
运行结果
[1, 2, 3, 3, 3, 4, 5, 5, 6, 6, 7, 8]