Scheme 时间复杂度设置汽车!/设置cdr!计划中

Scheme 时间复杂度设置汽车!/设置cdr!计划中,scheme,time-complexity,sicp,Scheme,Time Complexity,Sicp,我想知道这辆车的时间复杂度是多少!设置cdr!你参加过这个计划吗?我认为这是恒定的时间,但我可能错了,因为我不知道它们在内部是如何工作的。谁有主意 在Scheme的任何合理实现中,由于conse非常常见,它们被实现为某种双字结构。在这种实现中,car,cdr,设置car,和设置cdr都是固定时间 正如Alexis King所评论的,您必须有一个非常反常的实现,才能使它不是恒定时间。(例如,如果cons单元格实现为alists。)这将取决于实现,因为它没有指定“它们如何在内部工作”。我希望,就像您

我想知道这辆车的时间复杂度是多少!设置cdr!你参加过这个计划吗?我认为这是恒定的时间,但我可能错了,因为我不知道它们在内部是如何工作的。谁有主意

在Scheme的任何合理实现中,由于conse非常常见,它们被实现为某种双字结构。在这种实现中,
car
cdr
设置car,和
设置cdr都是固定时间


正如Alexis King所评论的,您必须有一个非常反常的实现,才能使它不是恒定时间。(例如,如果cons单元格实现为alists。)

这将取决于实现,因为它没有指定“它们如何在内部工作”。我希望,就像您一样,大多数实现中的时间都是恒定的。如果一个方案实现以某种方式设法实现这些时间,使它们不是恒定的时间,我会发现这很了不起。@AlexisKing在闭包方面有经典的
cons
实现(教育性的)。若词汇闭包并没有很好地实现,那个么setcdr和setcar可能会慢一些。诚然,我不希望一个实现提供这些作为实际实现,但我可以在一个示例实现中看到这种情况。@JoshuaTaylor它可能会慢一些,但它仍然是常数时间,尽管常数因子更大。@chris它仍然取决于词法环境是如何实现的。如果这些是作为关联列表实现的,那么它很容易变得相当慢。没有固定时间的唯一原因是您正在模拟阵列/直接内存查找。我认为shlisp是一个,我的Zozotez是另一个。