2016-12-03 80 views
-1

我想用这个方法的元组排序...排序元组的Python

如果(A1,B1)<(A2,B2),然后A2> A1或(A1 == A2和B2> B1)。

该算法不应该在适当的位置,它预计会接收范围[0,99]中的数字。

Input: 
[(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53), 
(92, 95), (60, 38), (20, 62), (72, 57)] 
Output: 
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57), 
(78, 24), (79, 82), (84, 46), (92, 95)] 

我想用计数排序的概念,因为时间复杂度必须是O(N)的,但随后的名单计数器长度为100 * 100。这不是一个非常有效的方法。

你有什么建议吗?

+0

这应该工作开箱。尝试'sorted(input_list)'。 – Tobias

回答

1

sorted()内置功能应该只是罚款为您的情况下,将第一要素,如果第一个元素是两个项目一样,它然后比较第二个元素等

在下面例如,simple_list[0][0]simple_list[1][0]和相等(4,4),所以simple_list[0][1]simple_list[1][1](3和5)进行比较:

>>> simple_list = [(4, 3), (4, 5), (1, 2)] 
>>> sorted(simple_list) 
[(1, 2), (4, 3), (4, 5)] 

对于你的情况下,尝试以下方法:

tuples_list = [(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53), (92, 95), (60, 38), (20, 62), (72, 57)] 

sorted_list = sorted(tuples_list) 

输出:

>>> sorted(tuples_list) 
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57), (78, 24), (79, 82), (84, 46), (92, 95)]