2017-08-24 36 views
-2

我如何編寫我自己的排序程序在程序中接受程序並根據程序進行排序!方案中的排序程序

如果可以,程序是什麼?

例如 - (排序「(2 4 9 5 3)>)的產率(9 5 4 3 2)

而且任何人都可以提供一個程序,用於在第二列表中搜索一個列表的每個元素!

+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並打開定義文件以查看它是如何完成的。毋庸置疑,爲了在大多數情況下表現良好,其相當先進。