2010-11-19 10 views
0

この例では、ソートされたリストに要素を挿入するインデックスを決定する方法を示します。 binarySearch()は存在する要素の位置を特定するために使用されますが、存在しない要素の挿入インデックスを決定するためにも使用できます。アルゴリズムの漸近解析:時間nでソートされたリストnにk個の新しい要素を挿入する方法O(k log k + n)

// Create a list with an ordered list of items 
List sortedList = new LinkedList(); 
sortedList.addAll(Arrays.asList(new String[]{"ant", "bat", "cat", "dog"})); 
// Search for the non-existent item int index = Collections.binarySearch(sortedList, "cow"); 
// -4 // Add the non-existent item to the list 
if (index < 0) { sortedList.add(-index-1, "cow"); } 

どのように時間O(k log k + n)の要素を挿入できません。 kはリストの数です。 nは、すべてのリスト(n = n1 + n2 + ... + nk)の要素の合計数です。

アルゴリズムの漸近分析で説明しますか?

+0

@MSN:OPからの説明なしに宿題タグの追加をやめてください。 –

+1

@モロン、ああ、私の悪い。テキストを与えて、私はまず最初の段落を探さなければなりませんでした:http://www.exampledepot.com/egs/java.util/coll_InsertInList.html – MSN

+0

JavaのLinkedListに慣れていない、本当にバイナリ検索をサポートしていますか? – Axn

答えて

2

これは宿題のフラグが必要なように聞こえるので、私は完全にあなたのためにそれを台無しにしませんが、非常に古典的なソートアルゴリズムを見直し、要素を挿入するとは考えません。両方のリストのすべての要素を含むリスト。

関連する問題