方案中的排序程序

时间:2017-08-24 17:46:00

标签: sorting search scheme procedure

如何在方案中编写我自己的排序程序,该程序接受程序并根据程序对其进行排序!

如果可以,程序是什么?

示例 - (排序'(2 4 9 5 3)>)收益率(9 5 4 3 2)

任何人都可以建议在第二个列表中搜索一个列表的每个元素的过程!

1 个答案:

答案 0 :(得分:0)

这很简单。您只需赋予变量以保存谓词的名称并实现您喜欢的排序策略。

;; 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)

在稍微更高级的排序算法中,您不需要同时知道(< snd fst)(< fst scd),因此如果这两个都是假的,那么您有第三个选项,它们是相同的。

现在继续查找您要实施的the sorting algorithm。对于少数元素,即使专业图书馆使用Insertion sort,通常对于较大的数据集merge sort or quick sort也是不错的选择。

如果使用固定大小的向量来处理更长的列表,许多排序算法会更快。因此,大多数库实际上首先使用值创建可变向量,进行排序,然后将其转换回列表。在像DrRacket这样的Scheme实现中,您可以右键单击他们的sort并打开定义文件以查看它是如何完成的。不用说它非常先进,以便在大多数情况下表现良好。