【发布时间】:2015-07-06 07:01:27
【问题描述】:
我正在用 SML/NJ 编写一段代码,并且有时需要访问我已经创建的列表。我知道,例如,在 C 语言中,访问数组需要恒定的时间。所以,我认为 ML 也是如此。然而,显然,内置 List.nth(l,i) 函数的复杂性与作为参数给出的列表大小成线性关系。
然后我转向数组,但我认为 Array.sub 函数也具有线性复杂性。
所以,鉴于访问元组,如 #2(12,5.6,"foo"),具有 O(1) 复杂度,我想问是否有办法,我可以使用元组,而不是列表,而是动态访问它。
例如,假设我想编写一个函数,它接受一个元组,只有布尔值和一个整数 n,如果元组的第 n 个元素为 true,则返回 True。类似:
fun isTrue (n,tup) =
if #n(tup) then true
else false;
我知道这不是有效的 SML,那么有没有办法编写这样的函数?
非常感谢您抽出宝贵时间!
【问题讨论】:
-
“我认为 Array.sub 函数也具有线性复杂性。”你为什么这么认为?
标签: arrays list tuples time-complexity sml