0
我正在使用持久数组创建联合查找算法。这里有一些功能,我可以使用:SML中的数组函数
Array.sub : 'a array * int -> 'a
Array.update: 'a array * int * 'a -> unit
我需要从现有的一个区别仅一个槽一定时间内建立一个表
datatype 'a table = Array of 'a Array.array | Change of int * 'a * 'a table ref
,使用更改构造函数和库
Array.tabulate : int * (int-> 'a)-> 'a array
实施函数返回一个大小为n的表的引用,其中每个元素是它自己的分区。
newTable : int -> int table ref
这里是我的尝试,但任何帮助,将不胜感激,因为我真的很困惑:
fun newTable n =
if 0 = Array.sub(Array.tabulate (n,fn i => i), 0)
then()
else
ref(Change(Array.array(n)));
函数newTable应该做什么? – waldrumpus 2013-03-19 12:31:26
我曾经根据Robert Sedgewick的算法书实现了union-find https://github.com/gruenewa/sml-snippets/blob/master/unionfind/union-find.sml – gruenewa 2014-08-07 07:34:34