在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)的事實,但是我會在發生誤解的情況下進行編輯 –