我需要编写一个函数来对仅包含 1 和 0 的列表进行排序,并且我需要使用递归。 我编写了一个无需递归对其进行排序的函数(一种修改后的计数排序,并设置了一些限制以使其仅接受 1 和 0)。有什么方法可以使用递归重写我的解决方案吗?或者使用递归(可能是修改后的快速排序)来解决这个问题?
def counting_sort(array):
"""sorting only ones and zeros"""
count = [0] * 2
for a in array:
count[a] += 1
i = 0
for a in range(2):
for x in range(count[a]):
array[i] = a
i += 1
return array
请您参考如下方法:
这样就可以了。它可能不是最优雅的,但它简单易行:
def binSort(array):
if len(array) == 0:
return []
if array[0] == 0:
return [0] + binSort(array[1:])
return binSort(array[1:]) + [1]
它查看列表中的第一个元素,将 0 放在开头,将 1 放在结尾,然后移动到列表的其余部分。如果您有任何问题,我很乐意回答。
