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