আপনি এটির মতো O(n)
( n
সংখ্যার সংখ্যাটি কোথায় ) এটি করতে পারেন:
ডান থেকে শুরু করে আপনি প্রথম সংখ্যার অঙ্কটি খুঁজে পাবেন যাতে বাম সংখ্যাটি ডান-অঙ্কের চেয়ে ছোট is বাম-অঙ্কটি "অঙ্ক-এক্স" দ্বারা উল্লেখ করা যাক। অঙ্ক-x এর ডান থেকে অঙ্ক-x এর চেয়ে বৃহততম সংখ্যাটি সন্ধান করুন এবং এটি অবিলম্বে অঙ্ক-এক্স এর বামে রাখুন। অবশেষে, বাকী অঙ্কগুলি আরোহণের ক্রমে বাছাই করুন - যেহেতু সেগুলি ইতিমধ্যে ছিল অবতরণ ক্রমে আপনাকে যা করা দরকার তা হ'ল তাদের বিপরীত করা উচিত (অঙ্ক-এক্সের জন্য সংরক্ষণO(n)
করুন , যাতে সঠিক জায়গায় স্থাপন করা যেতে পারে ) ।
একটি উদাহরণ এটি আরও স্পষ্ট করে তুলবে:
123456784987654321
একটি সংখ্যা দিয়ে শুরু করুন
123456784 987654321
right ডান দিক থেকে প্রথম স্থান যেখানে বাম সংখ্যাটি ডানের চেয়ে কম
অঙ্ক "এক্স" 4 হয়
123456784 987654321
4 4 থেকে ডানদিকে বৃহত্তরতম সংখ্যার সন্ধান করুন
123456785 4 98764321
it এটি 4 এর বামে রাখুন
123456785 4 12346789
123456785123446789
5. টির ডান দিকে বাছাই করুন, যেহেতু এগুলি বাদে সবগুলিই all
'4' ইতিমধ্যে অবতরণে ছিল, আমাদের যা করা দরকার তা হ'ল
তাদের ক্রমটি বিপরীত করুন এবং '4' এর জন্য সঠিক জায়গাটি আবিষ্কার করুন
সঠিকতার প্রমাণ:
আসুন অঙ্কের স্ট্রিংগুলি এবং সংখ্যার জন্য লোয়ার-কেস নির্ধারণ করতে বড় হাতের অক্ষর ব্যবহার করুন। বাক্য গঠনটির AB
অর্থ "স্ট্রিংগুলির সংমিশ্রণ A
এবং B
" । <
ডিক্সোগ্রাফিকাল অর্ডারিং, যা অঙ্ক-স্ট্রিং সমান দৈর্ঘ্যের হয় যখন পূর্ণসংখ্যার ক্রম হিসাবে সমান।
আমাদের আসল নম্বর এন সেই ফর্মের AxB
, যেখানে x
একক অঙ্ক এবং B
উতরাই সাজানো।
সংখ্যা আমাদের এলগরিদম দ্বারা পাওয়া যায় AyC
, যেখানে y ∈ B
ক্ষুদ্রতম ডিজিট > x
(এটা থাকা আবশ্যক কারণে পথ x
নির্বাচিত হয়েছে, উপরোক্ত দেখুন) , এবং C
সাজানো আরোহী হয়।
ধরুন এখানে কিছু নম্বর রয়েছে (একই অঙ্কগুলি ব্যবহার করে) N'
যেমন AxB < N' < AyC
। N'
অবশ্যই A
এটি দিয়ে শুরু করা উচিত অন্যথায় এটি তাদের মধ্যে পড়তে পারে না, তাই আমরা এটি ফর্মটিতে লিখতে পারি AzD
। এখন আমাদের বৈষম্যটি AxB < AzD < AyC
যা xB < zD < yC
তিনটি ডিজিট-স্ট্রিংয়ে একই অঙ্ক রয়েছে তার সমান।
এটি সত্য হওয়ার জন্য আমাদের অবশ্যই থাকা উচিত x <= z <= y
। যেহেতু y
ক্ষুদ্রতম সংখ্যা > x
, z
তাদের মধ্যে হতে পারে না, তাই হয় হয় z = x
বা হয় z = y
। বলুন z = x
। তারপরে আমাদের অসমতা xB < xD < yC
, যার অর্থ B < D
যেখানে উভয় B
এবং D
একই অঙ্ক রয়েছে digit যাইহোক, বি, সাজানো সাজানো হয় তাই হল যারা সংখ্যা এটা চেয়ে বড় কোন স্ট্রিং। এভাবে আমরা থাকতে পারি না B < D
। একই পদক্ষেপগুলি অনুসরণ করে, আমরা দেখতে পাই যে, যদি z = y
আমাদের না পারে D < C
।
সুতরাং N'
অস্তিত্ব থাকতে পারে না, যার অর্থ আমাদের অ্যালগরিদম সঠিকভাবে পরবর্তী বৃহত্তম সংখ্যাটি খুঁজে পায়।