2

sort : real list -> int list * real listmergesort を使用してリストをソートし、ソート前の個々の数値の元の位置を含む int リストを返す関数を宣言しようとしています。

おそらく、次の例が理解しやすくなります。

sort [5.4,7.2,1.5,9.6] = ([2,0,1,3], [1.5,5.4,7.2,9.6]

これで、リストの並べ替えは非常に簡単になりましたが、元の位置を記憶してから int リストを作成する方法を理解するのに苦労しています。

ヘルプ?

4

1 に答える 1

1
  1. 元のリストの各項目とそのインデックスを含むペアのリストを作成します (これを行うには、インデックスのリスト (List.tabulate で作成できる) で ListPair.zip を使用できます)。
  2. そのリストを並べ替えます。
  3. ListPair.unzipソートされたペアのリストをペアのリストに変換するために使用します。
于 2010-11-02T15:07:40.503 に答える