算法的渐近分析:如何将k个新元素插入到时间大小为n的排序列表中(k log k + n)

时间:2010-11-19 16:51:00

标签: algorithm

此示例演示如何确定元素应插入排序列表的索引。尽管binarySearch()用于定位现有元素,但它也可用于确定不存在元素的插入索引。

// 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)。

解释算法的渐近分析

1 个答案:

答案 0 :(得分:2)

这听起来像是值得一个家庭作业的旗帜,所以我不会完全为你破坏它,但是检查你的经典排序算法,不要把它想象为插入元素,把它想象成创建一个仍然有序的列表包含两个列表中的所有元素。