Сортировка списка методом Седжвика - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д