Zaten sıralanmış olan bir listeye doğru bir yere gelmesi için tek bir tamsayı eklemem gerekiyor. İlk düşündüğüm şey gibiydi
(sort (cons newelt list) #'<)
Ancak, listhalihazırda sıralandığı göz önüne alındığında , yalnızca bir ekleme gerçekten gereklidir, bu, bu çözümün kullandığı algoritmaya bağlı olarak korkunç derecede uygun olabileceği anlamına gelir sort.
Peki, kullanılan algoritma hangisi sort?
Aşağıdaki gibi bir şey yaparak daha iyi olur muyum?
(let ((tail list))
;; The first element is never less-than
(while (and tail (< newelt (cadr tail)))
(setq tail (cdr tail)))
(setcdr tail (cons newelt (cdr tail)))
list)
Bzaten sıralanmış başlangıç olması listve Ave Cbaşlangıçta boş listeleri. Bölünmüş Biki parçalı olarak B1, B2uzunlukları mve mya m+1ve m, karşılaştırma neweltbirinci elemana B2. Eğer neweltis ≥uzatmak Aile sağa B1ve değiştirme Bile B2, başka uzatmak Cile sola B2ve değiştirme Bile B1. O(log n)Bu adımlardan sonra hiçbir şey kalmaz B. Sonra Aşeyi içermesi ≤ neweltve Cbu > neweltve birleştirme genişletilmiş sıralı liste üretir. Dilden e-lisphoşlanmadığım için özür dilerim .