List.assoc 的 OCaml 复杂性

标签 ocaml complexity-theory lookup

在 OCaml 的 List 模块中,val assoc : 'a -> ('a * 'b) list -> 'b 是如何实现的,(因此)它的复杂度是多少手术 ?幕后是否隐藏了 hashtbl?

最佳答案

可在此处在线获取代码:https://github.com/ocaml/ocaml/blob/trunk/stdlib/list.ml#L180-L182

let rec assoc x = function
    [] -> raise Not_found
  | (a,b)::l -> if compare a x = 0 then b else assoc x l

如您所见,它是作为对列表的线性搜索实现的。

关于List.assoc 的 OCaml 复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171560/

相关文章:

algorithm - 在 O(n) 时间内添加方阵?

企业堆栈中的 OCaml

c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?

pandas - OCaml 中是否有等效的数据框?

java - 最小优先级队列的复杂性问题

excel - Excel 中的复杂查找

android - 联系人 LOOKUP_KEY 有多持久?

c# - 如果我只需要快速查找键而值无关紧要,我应该使用 C# 字典吗?

operators - 如何修改 OCaml 中的一元运算符?

emacs - Emacs 中 Ocaml 的不同缩进样式