在OCaml中元素列表中获取元素位置的最快方法是什么? 我知道如何获得列表中某个元素的“第n个”位置,但是我想知道如果我已经知道这个元素的值,该如何获取这个元素的位置。元素在列表中的位置(OCaml)
1
A
回答
8
我相信最快的方式是最常用的方式:
- 浏览列表
- 返回的位置,如果你打所需元素
- 如果从未被击中,那么这是最坏的情况,并且整个列表被扫描。
的时间复杂度将是O(N)
let index_of e l =
let rec index_rec i = function
| [] -> raise Not_found
| hd::tl -> if hd = e then i else index_rec (i+1) tl
in
index_rec 0 l
0
let rec findi_rec base p l = match l with [] -> raise Not_found | h::_ when p h -> base | _::t -> findi_rec (base+1) p t;;
let findi p l = findi_rec 0 p l;;
由于:
# findi (fun x -> x=4) [1;9;3;2;1;4;5;7];;
- : int = 5
+4
你的代码是不可读的,你给它如何工作 – Thomash
相关问题
- 1. OCaml在列表中插入元素
- 2. OCAML - 列表中的元素是?
- 3. OCaml:交换列表中的元素
- 4. 组合列表中的元素 - OCaml
- 5. OCaml交换列表中的元素
- 6. returnig元素在列表中,并在列表中的位置
- 7. 从列表中获取元素ocaml
- 8. 查找列表中元素的位置
- 9. 使用Ocaml对列表中的交换元素使用Ocaml
- 10. OCaml查找元素列表中的新元素
- 11. 在Ocaml中返回列表的每一个其他元素
- 12. 在列表中的每个元素之间添加东西 - OCaml
- 13. 如何在Python中查找列表中元素的位置?
- 14. 在同一位置的列表中元素的总和
- 15. 检查一个元素是否等于OCaml中列表中的任何元素?
- 16. 如何在返回列表之前记录Ocaml中列表的所有元素?
- 17. OCaml:将元素添加到数组中的列表中
- 18. Ocaml,用列表中给定的元素替换所有指定的元素
- 19. 使用递归可能在元素列表中的位置?
- 20. 在随机位置的列表添加字符元素R中
- 21. 动画div元素改变其在div列表中的位置
- 22. 如何统计元素在列表中的位置?
- 23. 在列表中的特定位置插入一个元素
- 24. 图像和文本在列表元素中的位置内联
- 25. 阵列索引位置中的元素
- 26. 替换阵列中元素的位置
- 27. 阵列中元素的确切位置
- 28. 从列表中提取元素给出在另一个列表中的位置
- 29. 根据元素的位置从列表创建新的列表
- 30. HTML表格中的位置元素
其实你不扫描整个列表中没有任何解释,你作为停止一旦你达到你正在寻找的元素 – Thomash
@Thomash我说,如果你找到元素,返回。我写了'整个列表'来反映最坏的情况,并且也反映了O(N)的事实,但是我会在发生误解的情况下进行编辑 –