2016-05-29 9 views
-1

問題の1つのソートされたリストを作るためにそれらをソートはこれです:名前の二つのリストを組み合わせると、私が現在働いている名前

私は2つのソートとる(L1、L2)コンバインと呼ばれる関数を書きたいです2つのリストのすべての要素を1つのソート済みリストに結合し、そのリストを返します。例えば、

L1 = ["Alice", "Bob", "Charlie", "Eve"] 

    L2 = ["Adam", "Chloe", "David"] 

返されたリストには、許可機能をソートされていない追加以外の

["Adam", "Alice", "Bob", "Charlie", "Chloe", "David", "Eve"]. 

ませ内蔵のリスト方法、ないだろう。

この

は、私がこれまで持っているものです。

def convertString(s): 
     return s==str(s) 

    def compareName(n): 
     for i in n: 
      if i[i]<="A": 
       newList.append(i) 
     return newList 

    # This function combines two lists and produces a final sorted list. 
    def combine(L1,L2): 
     newList=[] 
     L1=convertString(L1) 
     L2=convertString(L2) 
     for c in range(L1): 
+0

マージソートアルゴリズムのマージサブルーチンを見ることができます。これはまったく同じことです。 – kkaosninja

答えて

0

あなたはおそらくすでにそれを考え出したが、これは、あなたがそれについて移動することができます一つの方法である:

L1 = ["Alice", "Bob", "Charlie", "Eve"] 
    L2 = ["Adam", "Chloe", "David"] 

    def merge_sorted_lists(L1, L2): 

     sorted_list = [] 

     # Copy both arg lists to make sure original lists are not 
     # modified 
     l1 = L1[:] 
     l2 = L2[:] 

     while len(l1) > 0 and len(l2) > 0: 
      if (l1[0] <= l2[0]): # Compare both heads 
       item = l1.pop(0) # Pop from the head 
      else: 
       item = l2.pop(0) 

      sorted_list.append(item) 

     # Add the remaining of the lists 
     sorted_list += l1 + l2 

     return sorted_list 

    # Output 
    ['Adam', 'Alice', 'Bob', 'Charlie', 'Chloe', 'David', 'Eve'] 

はこれはかなりありますマージソートアルゴリズムの実装

関連する問題