java - 是否可以在恒定时间内添加/更新排序列表?

标签 java sorting data-structures

假设您得到一个已经排序的整数列表,例如 (1,7,13,14,50)。应该注意的是,该列表将不包含重复项。

是否有一些数据结构可以存储它,同时允许我在恒定时间内添加任何新元素(在适当的位置)? add(10) 会产生 (1,7,10,13,14,50)。

同样,我是否能够更新一个元素(例如将 7 更改为 19)并在恒定时间内相应地改变顺序?变化 (7,19) 产生 (1,13,14,19,50)。

对于一个类,我需要编写一个数据结构来尽快执行这些操作,但我只想知道是否可以完成恒定时间,如果不能,那么理想的运行时间是什么?

最佳答案

要以恒定时间 O(1) 插入,这只会作为任何数据结构的最佳情况发生。哈希表通常具有最佳插入时间,但如果存在冲突并且存在单独的链接,它可能并不总是 O(1)。您不对哈希进行排序,因此复杂性无关紧要。

二叉树有很好的插入时间,作为奖励,它在插入新节点时已经排序。然而,这平均需要 O(logn) 时间。如果树为空,则插入的最佳情况是 O(1)。

这些只是几个示例,有关这些操作的复杂性的更多信息,请参见此处:http://bigocheatsheet.com/

关于java - 是否可以在恒定时间内添加/更新排序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116694/

相关文章:

java - 使用 Java 在 Windows 中创建新文件夹时出现问题

javascript - 使用 Ajax 和 Jquery 按最大到最小的数字对数组进行排序

java - 使用分隔值对数组进行排序

python - 如何使用 lambda 对元组进行排序

python - 在 Python 中,什么类型的数据结构将允许快速搜索并且最有效?

algorithm - 懒惰酒保算法

java - 有没有支持快速插入和中值计算的数据结构?

java - 模块声明中的 requires 和 requires static 有什么区别

java - 将 Character[] 的范围转换为 String

java - Spring Data JPA - 如何缓存实体,该实体包含在许多其他实体中