Lispで挿入ソート・その2
Lispで挿入ソート・その1 - Shammerismで作成した ins-list を少し改良。比較が常に < になっていたが、これを任意のものに変更できるようにした。改良版は以下。
? (defun insert-element (test element l) (if (null l) (cons element nil) (let ((first-element (car l))) (if (funcall test element first-element) (append (cons element nil) l) (append (cons first-element nil) (insert-element test element (cdr l))))))) INSERT-ELEMENT ? (insert-element #'< 13 '(0 10 20)) (0 10 13 20) ? (insert-element #'< 1 '(10 20 30)) (1 10 20 30) ? (insert-element #'< 40 '(10 20 30)) (10 20 30 40) ?