Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Algorithm List.mem的复杂性_Algorithm_List_Ocaml_Complexity Theory - Fatal编程技术网

Algorithm List.mem的复杂性

Algorithm List.mem的复杂性,algorithm,list,ocaml,complexity-theory,Algorithm,List,Ocaml,Complexity Theory,我有一个处理列表的算法,我想表达一下它的复杂性 在算法中,我有一个循环内的 List.MEM一个L/COD>,我不知道如何考虑列表MEM,必须是 O(list .Load(L)),还是 OcAML可以做一些神奇的事情,比O(list .Lead(L))< /C> >?p> 不,对于链表,理论上检查成员资格的最佳方法是O(n)。您可以通过牺牲空间来改进这一点,即使用哈希表代替,或者如果您关心顺序的话,在列表旁边有一个哈希表。没有魔法,下面是实现(OCaml 3.12.0): 如果您有一个OCaml

我有一个处理列表的算法,我想表达一下它的复杂性


在算法中,我有一个循环内的<代码> List.MEM一个L/COD>,我不知道如何考虑<代码>列表MEM<代码>,必须是<代码> O(list .Load(L))<代码>,还是<代码> OcAML可以做一些神奇的事情,比O(list .Lead(L))< /C> >?p> 不,对于链表,理论上检查成员资格的最佳方法是O(n)。您可以通过牺牲空间来改进这一点,即使用哈希表代替,或者如果您关心顺序的话,在列表旁边有一个哈希表。

没有魔法,下面是实现(OCaml 3.12.0):


如果您有一个OCaml源代码发行版,它位于名为
stdlib/list.ml
(第135行)的文件中。

顺便问一下,您在OCaml发行版的哪里可以看到这段代码?
let rec mem x = function
    [] -> false
  | a::l -> compare a x = 0 || mem x l