ここにドキュメントがあります:
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
比較関数に従って、リストを昇順で並べ替えます。比較関数は、引数が等しい場合は0を返し、最初の値が大きい場合は正の整数を返し、最初の値が小さい場合は負の整数を返す必要があります(完全な仕様についてはArray.sortを参照してください)。たとえば、compareは適切な比較関数です。結果のリストは昇順で並べ替えられます。List.sortは、(結果リストのサイズに加えて)一定のヒープスペースと対数スタックスペースで実行されることが保証されています。
現在の実装では、マージソートを使用しています。一定のヒープスペースと対数スタックスペースで実行されます。
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
List.sortと同じですが、the sorting algorithm is guaranteed to be stable
(つまり、等しいと比較される要素は元の順序で保持されます)。
現在の実装では、マージソートを使用しています。一定のヒープスペースと対数スタックスペースで実行されます。
merge sort
とにかく安定していると思いましたよね?
OCamlはどのようにnon-stable merge
ソートを生成できますか?
non-statble merge sort
バージョンでは、より高速ですか?