algorithm - 二叉搜索树与排序双向链表

标签 algorithm sorting data-structures

我想知道,如果二进制搜索用于排序的链表插入、搜索,它们之间的性能有什么区别吗?以及它们在哪些情况下表现不同,或者可能出于哪些目的,比如说,列表将无法使用,反之亦然。

最佳答案

您不能对链表(单链表或双链表)进行二分查找,因为如果不遍历链表的一半(从一端)就无法到达链表的中间。

毫无疑问,多级跳过列表的一种形式可以做到这一点,但在我看来,这只是模拟具有更复杂结构的二叉树。

一个排序的链表对于搜索、插入和删除往往是 O(n)(实际插入/删除本身是 O(1) 但您仍然必须找到插入或删除点首先)。

或者,二叉树(平衡树)的搜索、插入和删除操作的复杂度为 O(log n)(所有这些操作都与树的高度成正比)。

关于algorithm - 二叉搜索树与排序双向链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694750/

相关文章:

独立顶点覆盖算法

algorithm - 是否有一种算法可以找到一维盒子在一条线上的最佳位置?

c++ - 具有特定类型但没有模板的数据结构

algorithm - 合并两个完全二叉树的最大堆

algorithm - 枚举 1 到 n 之间所有设置了第 k 位的数字的最佳方法是什么?

java - 使用java实现“俄罗斯农民乘法

algorithm - 动态规划的复杂组合条件

php - 如何在 Magento 中获取属性选项的位置?

Java 选择排序交换不按预期工作

c# - 使用 LINQ 进行字母数字排序