2016-12-03 14 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()組み込み関数は、あなたのケースのためにうまく動作するはずです、それは最初の要素を比較し、最初の要素が2つの項目について同じであれば、それはその後、第二の要素を比較し、など

以下では例えば、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)]