2013-01-19 23 views
5

SMLには標準ソート機能がありますか?インターネット上のドキュメントは、私が何も見つけることができませんでした非常に希少です。SMLの標準ソート機能?

+0

あなたは何を並べ替えようとしていますか? –

+0

@RachelGallenリスト。 –

+0

私はあなたの傷跡が何であるかわかりませんが、[SML Basis Library](http://www.standardml.org/Basis/)のホームページは、機能を探すのに適しています –

答えて

11

を参照してください逆を取得するために逆使用することができます。 SMLベーシスライブラリにソート機能が定義されていないのは事実ですが、ほとんどの実装ではベースライブラリが拡張され、余分な機能が追加されています。

したがって、MosMLはArraySortモジュールとListSortモジュールの両方を持ち、SML/NJはListMergeSort実装のLIST_SORTシグニチャを持っています。また、MosMLのような配列のソート機能もいくつかあります。完全なリストについては、SML/NJライブラリマニュアルのtocを参照してください。ここで

1

リストのソートはどうですか?あなたは、常にどちらか

- fun sort(L) = 
= if L=[] then [] 
    = else if tl(L)=[] then L 
= else merge(sort(take(L)),sort(skip(L))); 
val sort = fn : int list -> int list 

はレイチェルは一部のみの権利であるhere

+0

マージ、テイク、スキップ?申し訳ありませんが、そこには実際にzilchのドキュメントがあります。 –

+0

SMLに標準のソート関数がないと思います。 –

+1

ところで、独自の –

1

は、標準的なクイックソート

fun qsort(func) = 
let 
    fun 
     sort([]) = [] | 
     sort(lhd :: ltl) = sort(List.filter(fn (x) => func(x, lhd))(ltl)) @ [lhd] @ sort(List.filter(fn (x) => not(func(x, lhd)))(ltl)) 
in sort 
end; 

はいくつかのコンパレータ(同じタイプの2 elemnetsを取り、ブール値を返す関数)に投げると、あなたはもうドンを問うてしまった場合、それはあなた のソート機能を返しますです尋ねることを躊躇する:)

+0

を作成する必要はありません。このソーターは、x = yのfunc(x、y)= falseの場合にのみ順序を保持します。 –

関連する問題