1-)对于排序数组,我使用了二进制搜索。 我们知道排序数组中SEARCH操作的最坏情况复杂度是O(lg N),如果我们使用二进制搜索,其中N是数组中的项数。 使用二进制搜索的数组中包含重复值的搜索操作的最坏情况复杂度是多少? 它是否是相同的O(lg N)??如果我错了请纠正我!!
使用二进制搜索的排序数组中INSERT操作的最坏情况是什么? 我的猜测是O(N)......就是这样吗?
2-)对于未排序的数组,我使用过线性搜索。 现在我们有一个未排序的数组,它也接受重复的元素/值。 SEARCH和INSERT操作的最佳最坏情况复杂性是什么。 我认为我们可以使用线性搜索来为我们提供O(N)最差情况下的搜索时间 并删除操作。 对于未排序的数组,我们能做得比这更好吗?如果我们接受数组中的重复项,复杂性是否会发生变化。
答案 0 :(得分:2)
是。
最好的情况是无趣的。 (想想为什么会这样。)最坏的情况是O(N),插入除外。插入到未排序的数组是快速的,一个操作。 (再次考虑一下,如果你没有看到它。)
一般情况下,重复项除了极端的病理分布外几乎没有什么区别。
答案 1 :(得分:0)
途中有一些帮助 - 但不是整个解决方案。
答案 2 :(得分:0)
我们可以更好地从无序数组中删除!由于在这种情况下顺序无关紧要,我们可以将要删除的元素与最后一个元素交换,这可以避免数组中元素的不必要的移位。因此在O(1)时间内删除。