如何使用气泡排序按数组长度对二维数组或多个数组进行排序

2024-06-10 02:56:56 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试编写Python函数: def比较_长度(x、y、z)

它接受三个数组作为参数,检查它们的长度,并按长度顺序将它们作为三元组返回

例如,如果函数将[1,2,3]、[10,20,30,40]和[65,32,7]作为输入,则希望它返回([1,2,3]、[65,32,7]、[10,20,30,40])或([65,32,7]、[1,2,3]、[10,20,30,40])

可以将其视为:

Array = [1,2,3],[10,20,30,40],[65,32,7]

或:

x = [1,2,3]
y = [10,20,30,40]
z = [65,32,7]

但它需要被分类为:

([1,2,3], [65,32,7], [10,20,30,40])

或:

([65,32,7], [1,2,3], [10,20,30,40])

使用气泡排序


Tags: 函数参数排序顺序def分类数组array
2条回答

可以这样做,唯一的区别是使用的条件是数组的长度,而不是单个值

n = len(arr)
for i in range(n):
    for j in range(n-i-1):
        if len(arr[j]) > len(arr[j+1]):
            arr[j], arr[j+1] = arr[j+1], arr[j]

您不必发明自己的排序算法或使用冒泡排序。可以使用Python内置的排序机制并将排序条件指定为lambda来完成:

arrays = [[1, 2, 3], [10, 20, 30, 40], [65, 32, 7], [3, 3]]
result = sorted(arrays, key=lambda arr: len(arr))
print(result)

或者作为就地排序:

arrays = [[1, 2, 3], [10, 20, 30, 40], [65, 32, 7], [3, 3]]
arrays.sort(key=lambda arr: len(arr))
print(arrays)

如果您理解函数指针的概念,您甚至可以将其缩短:

arrays = [[1, 2, 3], [10, 20, 30, 40], [65, 32, 7], [3, 3]]
result = sorted(arrays, key=len)
print(result)

相关问题 更多 >