我正在尝试自学一些 python 排序算法,但我在输出方面遇到了一些麻烦。我正在尝试实现计数排序算法,我已经做到了这一点:
def counting_sort(l):
nums = l
highest = max(nums) + 1
helper_list = [0] * highest
s_list = []
for i in range(len(nums)):
value = nums[i]
helper_list[value] += 1
for j in range(len(helper_list)):
s_list.append([j] * helper_list[j])
return s_list
一切都很好几乎,但是当我输入[5, 2, 2, 3, 1, 2]
时。
我得到如下输出:[[], [1], [2, 2, 2], [3], [5]]
。
最佳答案
您只需将“附加”更改为“扩展”。 append 函数将一个元素添加到您的列表中,在本例中是另一个列表。 extend 函数将您的列表与作为参数给出的列表连接起来。
您的函数应如下所示:
def counting_sort(elements):
highest = max(elements) + 1
helper_list = [0] * highest
s_list = []
for value in elements:
helper_list[value] += 1
for j in range(len(helper_list)):
s_list.extend([j] * helper_list[j])
return s_list
关于python - 无法实现计数排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905274/