Skip to main content
 首页 » 编程设计

python之使用递归对仅包含 0 和 1 的列表进行排序

2025年05月04日16findumars

我需要编写一个函数来对仅包含 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 放在结尾,然后移动到列表的其余部分。如果您有任何问题,我很乐意回答。