Сортировка списка методом Седжвика - Lisp
Формулировка задачи:
Добрый день.
Который день мучаюсь с сортировкой методом Шелла. Программа должна вычислять последовательность шагов сортировки двумя методами - Седжвика и Кнута. Надеюсь на Вашу помощь!
Решение задачи: «Сортировка списка методом Седжвика»
textual
Листинг программы
(defun sedjvik (n) (let ((res nil)) (iter (for i upfrom 0) (let ((d (if (evenp i) (+ 1 (* (* 9 (^ 2 (\ i 2))) (- (^ 2 (\ i 2)) 1))) (+ (* 8 (^ 2 i)) (- (* 6 (^ 2 (\ (+ i 1) 2)))) 1)))) (if (<= (* 3 d) n) (collecting d into res) (return res)))))) ==> sedjvik (sedjvik 1000) ==> (1 5 19 41 109 209) (sedjvik 10000) ==> (1 5 19 41 109 209 505 929 2161)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д