Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
快速插入clojure序列的开头和结尾?_Clojure - Fatal编程技术网

快速插入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操作在列表的前面插入需要固定

在clojure中,列表从左侧增长,向量从右侧增长,因此:

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)特征