你真的尝试模拟了吗? 就拿你这个例子:
访问 plist[:b]
: 第一次 car 发现是 :a
, 再 cdr 两次到 :b
, car 一下发现是要找的键值对, 再 cdr + car 拿到值.
总共 三次 car + 三次 cdr
访问 alist[:b]
: car 两次发现是 :a
, 再 cdr + car 拿到下一个键值对, 再 car 发现 key 是 :b
, 再 cdr 拿到值.
总共 四次 car + 两次 cdr
理论上的算法复杂度根本没有任何区别
你真的尝试模拟了吗? 就拿你这个例子:
访问 plist[:b]
: 第一次 car 发现是 :a
, 再 cdr 两次到 :b
, car 一下发现是要找的键值对, 再 cdr + car 拿到值.
总共 三次 car + 三次 cdr
访问 alist[:b]
: car 两次发现是 :a
, 再 cdr + car 拿到下一个键值对, 再 car 发现 key 是 :b
, 再 cdr 拿到值.
总共 四次 car + 两次 cdr
理论上的算法复杂度根本没有任何区别