代码之家  ›  专栏  ›  技术社区  ›  Muhammad Alkarouri

F#ResizeArray是否稳定?

  •  4
  • Muhammad Alkarouri  · 技术社区  · 15 年前

    如果不是,如何用F#写一个稳定的排序?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Brian    15 年前

    Seq.sort 是稳定的。

        2
  •  10
  •   Yin Zhu    15 年前

    你问题的答案是 unstable

    弗斯特 ResizeArray.sortBy 具体实施如下:

    module ResizeArray =
        let sortBy f (arr: ResizeArray<'T>) = arr.Sort (System.Comparison(fun x y -> compare (f x) (f y)))
    

    以及 ResizeArray 是.Net列表集合的别名:

    type ResizeArray<'T> = System.Collections.Generic.List<'T> // alias
    

    现在让我们看看 List documentation :

    此方法使用Array.Sort 使用快速排序算法。这个 实现执行不稳定的 平等,他们的顺序可能不一样 保留元素的顺序 我们是平等的。