快速插入clojure序列的开头和结尾?
在clojure中,列表从左侧增长,向量从右侧增长,因此:快速插入clojure序列的开头和结尾?,clojure,Clojure,在clojure中,列表从左侧增长,向量从右侧增长,因此: user> (conj '(1 2 3) 4) (4 1 2 3) user> (conj [1 2 3] 4) [1 2 3 4] 在序列的前后插入值的最有效方法是什么?您需要不同的数据结构来支持在开始和结束时快速插入。请参见据我所知,序列只是一种通用数据结构,因此它取决于您正在使用的具体实现 对于支持随机访问的数据结构(例如向量),它应该花费恒定的时间O(1) 对于列表,我希望使用cons操作在列表的前面插入需要固定
user> (conj '(1 2 3) 4)
(4 1 2 3)
user> (conj [1 2 3] 4)
[1 2 3 4]
在序列的前后插入值的最有效方法是什么?您需要不同的数据结构来支持在开始和结束时快速插入。请参见据我所知,序列只是一种通用数据结构,因此它取决于您正在使用的具体实现 对于支持随机访问的数据结构(例如向量),它应该花费恒定的时间O(1) 对于列表,我希望使用
cons
操作在列表的前面插入需要固定的时间,但是插入到列表的后面需要O(n),因为您必须遍历整个结构才能到达末尾
当然,还有很多其他的数据结构,理论上可以是一个序列(例如树),它有自己的O(n)特征