此示例演示如何确定元素应插入排序列表的索引。尽管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)。
解释算法的渐近分析
答案 0 :(得分:2)
这听起来像是值得一个家庭作业的旗帜,所以我不会完全为你破坏它,但是检查你的经典排序算法,不要把它想象为插入元素,把它想象成创建一个仍然有序的列表包含两个列表中的所有元素。