Сортировка списка методом Седжвика - 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.667 из 5
Похожие ответы