Time complexity 范围查询的时间复杂度

Time complexity 范围查询的时间复杂度,time-complexity,Time Complexity,我试图了解不同搜索数据结构的时间复杂性。我非常了解搜索、插入和删除,但我没有得到的是范围查询。例如,对于无序和有序的链表,或者不平衡和平衡的bin树(或AVL),或者对于哈希表,范围查询时间的复杂性是什么?我找到了bigocheatsheet.com网站,但他们似乎没有提到任何范围查询 同样关于基本的搜索和插入,当一个哈希表半满时,它是如何改变的呢?一个完美的散列函数会使事物保持不变,但当它不完美时又会怎样呢?范围查询意味着查找属于给定范围的所有元素。例如,数据结构上[a,b]的范围查询意味着查

我试图了解不同搜索数据结构的时间复杂性。我非常了解搜索、插入和删除,但我没有得到的是范围查询。例如,对于无序和有序的链表,或者不平衡和平衡的bin树(或AVL),或者对于哈希表,范围查询时间的复杂性是什么?我找到了bigocheatsheet.com网站,但他们似乎没有提到任何范围查询


同样关于基本的搜索和插入,当一个哈希表半满时,它是如何改变的呢?一个完美的散列函数会使事物保持不变,但当它不完美时又会怎样呢?

范围查询意味着查找属于给定范围的所有元素。例如,数据结构上[a,b]的范围查询意味着查找介于a和b之间的元素计数

在有序或无序链接列表上提供范围查询将需要O(n)时间,因为在最坏的情况下,您需要遍历整个列表以查找元素a和b

在平衡或非平衡二叉树上提供范围查询需要相同的最坏情况时间O(n),除非该树是。如果是范围查询,则采用O(logn,k),其中k是该范围内的元素数

简言之,范围查询的最坏情况时间复杂度为O(n),除非数据结构特别增加了使范围查询更快的信息。为了优化范围查询的数据结构,首先对数据集进行一些预处理,并在每个节点中存储必要的信息。在提供范围查询时,每个节点存储的信息用于缩小搜索范围