मुझे पहले से हल की गई सूची में एक एकल पूर्णांक जोड़ने की जरूरत है, जैसे कि यह सही जगह पर जाता है। मेरा पहला संघर्ष कुछ ऐसा था
(sort (cons newelt list) #'<)
हालांकि, यह देखते हुए कि listपहले से ही सॉर्ट किया गया है, केवल एक प्रविष्टि वास्तव में आवश्यक है, जिसका अर्थ है कि यह समाधान उपयोग किए गए एल्गोरिदम के आधार पर बहुत ही अनुपयुक्त हो सकता है sort।
तो, कौन सा एल्गोरिथ्म है जो sortउपयोग करता है?
क्या मैं निम्नलिखित की तरह कुछ करना बेहतर होगा?
(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)
Bपहले से ही क्रमित प्रारंभिक हो listऔर Aऔर Cशुरू में खाली सूचियों। स्प्लिट Bदो भागों में B1, B2लंबाई की mऔर mया m+1और mतुलना neweltके पहले तत्व के लिए B2। तो neweltयह है ≥विस्तार Aके साथ अपने सही करने के लिए B1और की जगह Bके साथ B2, और विस्तार Cके साथ अपने बाईं ओर B2और की जगह Bके साथ B1। O(log n)ऐसे कदमों के बाद कुछ भी नहीं बचा है B। फिर Aचीजों को शामिल करता है ≤ newelt, और Cउन > newelt, और संघनन विस्तारित सॉर्ट की गई सूची का उत्पादन करता है। e-lispभाषा की तरह नहीं के लिए माफी ।