python - 无法实现计数排序算法

标签 python algorithm sorting counting-sort

我正在尝试自学一些 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/

相关文章:

python - 如何使用 BeautifulSoup 抓取缺少标签的网页

python - 从 PyQt5 中的 .ui 文件导入自定义小部件

algorithm - 图的 O(m+n) 时间算法

Java 按唯一索引号对值进行排序

python - 如何从 DOC(而不是 DOCX)获取 XML?

algorithm - 绘制一个具有特定像素数的圆

C++ 记住要做的工作(算法)

Ruby:对可能包含 nil 的多维数组进行排序有时会失败

C 保持运行信号数组排序

python - Pandas Dataframe 将我的字典变成了字符串