2017-08-24 8 views
-2

どうすればいいですか?手順の手順は、手続きを取って手順に基づいてソートするスキームにソートしてください!体系のソート手順

できる場合は、どのような手順ですか?

- (ソート「(2 4 9 5 3)>)利回り(9 5 4 3 2)

そして、誰もが第二のリスト内の1つのリストの各要素を検索するための手順を提案することができます!

+0

確かに、クイックソートを使用すると、機能プログラミングスタイルで実装するのは簡単です。 –

答えて

0

これはかなり簡単です。あなたはちょうどあなたがケースの両方があるので、(< snd fst)(< fst scd)の両方を知っている必要はありません少し、より高度なソートアルゴリズムでは

..述語に名前を保持し、あなたのソート戦略好きを実装するために
;; implements a 2 element sort 
(define (my-sort2 lst <) 
    (let ((fst (car lst)) (snd (cadr lst))) 
    (if (< snd fst) 
     (list snd fst) 
     lst))) ; already in correct order 

(sort '(1 2) >) ; ==> (2 1) 
(sort '(1 2) <) ; ==> (1 2) 

を変数を与えますこれらはあなたが同じであるという3番目の選択肢を持っているということは間違いです。

今すぐ実行して、実装するthe sorting algorithmを見つけてください。少数の要素については、プロのライブラリでさえもInsertion sortを使用し、より大きなデータセットの場合はmerge sort or quick sortが良い選択です。

ソートアルゴリズムの多くは、長いリストの固定サイズのベクトルで処理する方が高速です。したがって、ほとんどのライブラリは実際には値を持つ可変ベクトルを作成し、並べ替えを行い、リストに戻します。 DrRacketのようなSchemeの実装では、sortを右クリックして定義ファイルを開いて、それがどのように行われたかを見ることができます。言うまでもなく、ほとんどの場合、うまくいくためにはかなり進歩しています。