ইতিমধ্যে বাছাই করা তালিকায় আমার একটি একক পূর্ণসংখ্যা যুক্ত করা দরকার, যেমন এটি সঠিক জায়গায় যায়। আমার প্রথম চেষ্টা কিছু ছিল
(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
ভাষার খুব পছন্দ না করার জন্য ক্ষমা চাইছি ।