2010-11-19 2 views
0

В этом примере демонстрируется, как определить индекс, по которому элемент должен быть вставлен в отсортированный список , Хотя binarySearch() используется для определения существующих элементов, его также можно использовать для определения индекса вставки для несуществующих элементов.Асимптотический анализ алгоритмов: как вставить k новых элементов в отсортированный список размера n во времени 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

@Moron, ах, мой плохой. Учитывая текст, мне следовало сначала перенести первый абзац: http://www.exampledepot.com/egs/java.util/coll_InsertInList.html – MSN

+0

Не знаком с java LinkedList, действительно ли он поддерживает бинарный поиск? – Axn

ответ

2

Похоже, что он заслуживает флаг домашней работы, поэтому я не буду полностью его испортить, но просмотрите свои классические алгоритмы сортировки и не думайте об этом как о вставке элементов, подумайте об этом как о создании упорядоченного который содержит все элементы из обоих списков.

Смежные вопросы