2 つの降順リスト (list1 と list2) の和集合を見つける必要があります。ここで、和集合は、重複のない両方のリストの各要素になります。リスト要素が整数であると仮定します。この問題を解決するための最も効率的なアルゴリズムを決定するために、大きな O 表記を使用しています。1stの大文字オー表記は知っていますが、2ndのビッグオー表記は知りません。実装するアルゴリズムを決定できるように、誰かが2番目のアルゴリズムの大きなO表記を教えてもらえますか? 誰かがこれらのアルゴリズムよりも優れたアルゴリズムを知っている場合は、それを理解するのを手伝ってもらえますか? 前もって感謝します。
Here are my two algorithms. . .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Algorithm #1: O(N * log base2 N)
Starting at the first element of list1,
while(list1 is not at the end of the list) {
if(the current element in list1 is not in list2) // Binary Search -> O(log base2 N)
add the current element in list1 to list2
go to the next element in list1 }
list2 is now the union of the 2 lists
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Algorithm #2: O(?)
Starting at the first elements of each list,
LOOP_START:
compare the current elements of the lists
whichever element is greater, put into a 3rd list called list3
go to the next element in the list whose element was just inserted into list3
branch to LOOP_START until either list1 or list2 are at the end of their respective list
insert the remaining elements from either list1 or list2 into list3 (the union)
list3 now contains the union of list1 and list2