OCaml中的sort函数是否使用不可变或可变的数据结构?

时间:2013-02-21 19:32:37

标签: functional-programming ocaml

OCaml在实施排序时是否使用mutableimmutable数据结构?

对于许多排序算法,我们需要在列表或数组中的位置之间交换数据。

我只是想知道,如果OCaml总是打算使用immutable data structures,那么每个交换操作都会创建一个新副本吗?

这会影响performance吗?

1 个答案:

答案 0 :(得分:2)

  

对于许多排序算法,我们需要在列表或数组中的位置之间交换数据。

不一定。

  

我只是想知道,如果OCaml总是打算使用不可变数据结构

不,OCaml具有可变和不可变的数据结构。但是,通常首选使用不可变数据结构。

  

那么每个交换操作都会创建一个新副本吗?

这取决于所讨论的数据结构。但是,在处理不可变数据结构时,通常你不想用交换单个元素来表达你的排序算法(正如我上面指出的那样,你当然不需要)。

例如,

List.sort适用于不可变数据结构(列表),效率非常高。它使用合并排序算法(在OCaml的当前实现中)。