计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 先声明一个大于等于目标数列大小的列表, 将目标列表中的元素对应到创建的列表中, 循环填充后的列表,按顺序填入目标列表。
def counting_sort(sample, max_value): bucket_len = max_value + 1 bucket = [0] * bucket_len sorted_index = 0 sample_len = len(sample) for i in range(sample_len): if not bucket[sample[i]]: bucket[sample[i]] = 0 bucket[sample[i]] += 1 for j in range(bucket_len): while bucket[j] > 0: sample[sorted_index] = j sorted_index += 1 bucket[j] -= 1 return sample
参考:https://www.cnblogs.com/kaibindirver/p/12093823.html