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 的数组进行排序以实现有效的解决方案。