我需要一种方法来以最快的最快方式比较多个数字数组。例如,我有
[1, 2, 3, 4]
[2, 2, 3, 1]
[2, 2, 2, 3]
[1, 2, 3, 3]
排序如下:最重要的元素是索引0,因此索引0处值为1的所有数组都在索引0处值为2的数组之前。如果索引0相同则使用索引1进行比较两个阵列。
sorted_arrays = sorted(arrays, key: lambda x: x)
做我想做的事,但它相当慢。我认为它比较所有元素并且比我提出的另一个天真的实现要快得多:
class Array(object):
def __init__(self, values):
self.values = values
def __cmp__(self, other):
for arr1, arr2 in itertools.izip(self.values, other.values):
if arr1 < arr2:
return -1
elif arr1 > arr2:
return 1
return 0
arrays = sorted([
Array([1, 2, 3, 4]),
Array([2, 2, 3, 1]),
Array([2, 2, 2, 3]),
Array([1, 2, 3, 3])
])
是否有更快的方法可以做到这一点(不将每个数组与每个其他数组(以及可能的数组的所有元素)进行比较)?