use*_*773 2 java algorithm runtime linked-list doubly-linked-list
我必须尽可能高效地编写一个程序,将给定的节点插入到已排序的 LinkedList 中。我在想二分搜索在平均和最坏情况下如何比线性更快,但是当我搜索它时,运行时间是 O(nlogn)?我应该在单链表上进行线性搜索还是在双链表上进行二分搜索,为什么那个(选择的)更快?
另外,对于双向链表,二进制搜索算法如何 > O(logn)?(没有人推荐 SkipList,我认为它们违反了规则,因为我们有另一种严格针对该数据结构的实现)
你有两个选择。
您无法选择二进制搜索,因为您无法直接访问链表的元素。
但是,如果您认为搜索是决定速率的步骤,则根本不应该使用链表:您应该使用排序数组、堆、树等。