2017-03-20 6 views
0
Algorithm bar(A,n,B,m) 
    Input: arrays of integers, A of length n and B of length m 
    Output: true or false 

for i := 0 to n-1 
    for j := 0 to m-1 
     if A[i] == B[j] 
      return true 
     endif 
    endfor 
endfor 

return false 
+0

マージソートのマージ手順を参照してください。 – IVlad

+0

このアルゴリズム 'bar()'が何をしているのかを記述してください。 AとBに共通の要素がある場合はtrueを返しますか? –

+0

このアルゴリズムは、各配列の項目を比較して、BとAの要素との一致を見つけます。一致したときにtrueを返します。 –

答えて

0

どちらB又はAに進め、同時に終了するように最初から両方のアレイを横断することができ、素子が小さくによってその上に(アレイがascendinglyソートされると仮定):

def bar(A, n, B, m): 
    x = 0 
    y = 0 

    while x < n and y < m: 
     if A[x] < B[y]: 
      x++ 
     elif A[x] > B[y]: 
      y++ 
     else: 
      return True 

    return False 

ワーストケース実行時間になりますO(n + m) - 一致するペアを見つけることなく、両方の配列を1回トラバースします。

+0

新しい実行時の複雑さは何でしょうか? –

+0

'O(n + m)'最悪の場合。 – Paul

関連する問題