Answers:
对于列表,插入,查找和删除分别位于,O (n ),O (n )中。排序列表更糟。二进制搜索本身用于排序的数组,其中的运算符为O (n ),O (log n ),O (n )。如果您想要“插入”和“删除”操作,那么您不仅需要二进制搜索。
您可能想要像二叉搜索树之类的东西。一旦有了适当的术语,查找有关它的参考就容易得多。这些操作是在最坏的情况下进行的,例如,对于使用AVL树和红黑树的实现。
在最坏的情况下,如果碰巧只存储具有相同哈希值的元素,则哈希表会将每个元素存储在同一存储桶中。如果您使用列表存储存储桶中的元素,则在最坏的情况下查找为(其中n是表中元素的数量-更一般而言,n是最大存储桶中的元素数量),因为如果您要查找表中没有的元素,则需要遍历整个列表。正查找(您知道元素存在的地方)具有相同的复杂度:您需要n − 1 = Θ (n )如果您要查找列表的最后一个元素。删除具有相同的复杂性(如果碰巧要删除最后一个元素,则需要查询)。如果需要检查现有元素,则插入也为O (n ),如果允许重复,则插入为O (1 )(在这种情况下,可以将元素插入列表的开头)。
对于平衡的二叉搜索树,最坏情况的复杂度降低为,因为根据定义的平衡,平衡的搜索树的深度在树的大小上呈对数增长。