📌  相关文章
📜  Python程序对0、1和2的数组进行排序

📅  最后修改于: 2022-05-13 01:56:56.474000             🧑  作者: Mango

Python程序对0、1和2的数组进行排序

给定一个由 0、1 和 2 组成的数组 A[]。任务是编写一个对给定数组进行排序的函数。这些函数应该把所有的 0 放在最前面,然后把所有的 1 和所有的 2 放在最后。

例子:

Input : {0, 1, 2, 0, 1, 2, 2, 2, 2, 1}
Output : {0, 0, 1, 1, 1, 2, 2, 2, 2, 2}

Input :  {0, 1, 1, 0, 1, 2, 1, 2, 0, 0, 0, 1}
Output :  {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2}

简单的解决方案:我们创建三个空列表。我们将所有 0 添加到第一个列表,将 1 添加到第二个列表,将 2s 添加到第三个列表。最后我们追加所有列表并返回

# Function for sort
def SortWithoutSorting(arr):
# 3 Empty list for initialize 0 1 and 2
  
    l1 =[]
    l2 =[]
    l3 =[]
    for i in range(len(arr)):
        if arr[i] == 0:
            l1.append(arr[i])
        elif arr[i] == 1:
            l2.append(arr[i])
        else:
            l3.append(arr[i])
    return (l1 + l2 + l3)
  
# Driver Code
arr = array.array('i', [0, 1, 0, 1, 2, 2, 0, 1])
print(SortWithoutSorting(arr)) 

高效的解决方案上述解决方案需要额外的空间。如何在同一给定列表中没有额外空间(就地)并且仅使用一次遍历来做到这一点。请参阅对 0s、1s 和 2s 的数组进行排序以实现有效的解决方案。