【发布时间】:2013-07-17 08:25:33
【问题描述】:
我想知道,如果二进制搜索用于排序的链表插入、搜索,那么它们的性能有什么区别。以及在哪些情况下它们的表现会有所不同,或者可能出于何种目的,例如 list 将无法使用,反之亦然。
【问题讨论】:
标签: algorithm sorting data-structures
我想知道,如果二进制搜索用于排序的链表插入、搜索,那么它们的性能有什么区别。以及在哪些情况下它们的表现会有所不同,或者可能出于何种目的,例如 list 将无法使用,反之亦然。
【问题讨论】:
标签: algorithm sorting data-structures
您不能对链表(单或双)进行二分搜索,因为如果不遍历链表的一半(从一端),就无法到达链表的中间。
毫无疑问,多级跳过列表的一种形式可以做到这一点,但在我看来,这只是模拟具有更复杂结构的二叉树。
排序后的链表查找、插入和删除往往是 O(n)(实际插入/删除本身是 O(1) 但您仍然需要找到插入或删除点首先)。
或者,二叉树(平衡树)是 O(log n) 的搜索、插入和删除(所有这些操作都与树的 高度 成正比)。
【讨论】: