আমি লিনিয়ার সময়ে এর ধনাত্মক পূর্ণসংখ্যার মানগুলিকে বাছাই করতে আগ্রহী (অভিন্ন ব্যয় পরিমাপের র্যাম মডেলের মধ্যে, মানে, পূর্ণসংখ্যার লোগারিথমিক আকার হতে পারে তবে তাদের গাণিতিক ক্রিয়াকলাপগুলি ধরে নেওয়া হয়) ইউনিট সময় নিতে)। অবশ্যই, তুলনা-ভিত্তিক বাছাইকরণ অ্যালগরিদমগুলির সাথে এটি অসম্ভব, সুতরাং আমি একটি "আনুমানিক" সাজানোর গণনা করতে আগ্রহী, অর্থাত্, কিছু ক্রিয়াকলাপ এর যা সত্যিই সাধারণ সাজানো নয় কিন্তু সাজানো সংস্করণের "ভালো পড়তা"। আমি ধরে নেব যে আমরা সংখ্যাকে হ্রাস ক্রমে বাছাই করছি কারণ এটি সিক্যুয়ালটি কিছুটা রাজ্যকে আরও সুখকর করে তোলে, তবে অবশ্যই সমস্যাটিকে অন্যভাবে উপস্থাপন করতে পারে।
আনুমানিক ধরণের জন্য একটি সম্ভাব্য মানদণ্ড হ'ল: (*): হতে দেওয়া , প্রতি জন্য আমাদের সেই (যেমন) প্রয়োজন , "অর্ধ-সাজানো" তালিকাটি ক্রমহ্রাসমান ক্রিয়া ) দ্বারা উপরের দিকে আবদ্ধ । এটি সহজেই দেখতে পাওয়া যায় যে প্রকৃত বাছাই এটি সন্তুষ্ট করে: অবশ্যই চেয়ে বড় হওয়া উচিত না সুতরাং এটি সর্বাধিক যা , এবং সাধারণভাবে অবশ্যই than এর চেয়ে বড় হতে হবে নাযা ।
উদাহরণস্বরূপ, প্রয়োজন (*) নীচের অ্যালগরিদম দ্বারা অর্জন করা যেতে পারে (@ লুইস দ্বারা প্রস্তাবিত)। আমার প্রশ্নটি হল: লিনিয়ার সময়ে পূর্ণসংখ্যার "প্রায় বাছাই" করার এই কার্যটিতে কি বিদ্যমান কাজটি (*) এর মতো কিছু প্রয়োজনীয়তা চাপিয়ে দিয়ে প্রকৃত বাছাইটি পূরণ করবে? নীচের অ্যালগরিদম বা এর কিছু বৈকল্পিকের একটি প্রতিষ্ঠিত নাম আছে?
সম্পাদনা: অ্যালগরিদম স্থির করে আরও ব্যাখ্যা যুক্ত করা হয়েছে
অ্যালগরিদম:
INPUT: V an array of size n containing positive integers
OUTPUT: T
N = Σ_{i<n} V[i]
Create n buckets indexed by 1..n
For i in 1..n
| Add V[i] into the bucket min(floor(N/V[i]),n)
+
For bucket 1 to bucket n
| For each element in the bucket
| | Append element to T
| +
+
এই অ্যালগরিদম নিম্নলিখিত কারণে উদ্দেশ্যে হিসাবে কাজ করে:
- একটি উপাদান যদি বালতি হয় তারপর ।
- একটি উপাদান যদি বালতি হয় ঞ তারপর পারেন এন / ( ঞ + + 1 ) < বনাম বা ঞ = ঢ ।
বালতি রাখা হয় , এইভাবে বা । প্রথম ক্ষেত্রে যার মানে এবং এইভাবে ।
জন্য , আছে, সর্বাধিক, 1 থেকে বাকেট উপাদান ।
যাক দিন বাকেট 1..j এক উপাদান মোট সংখ্যা হবে। দ্বারা 2. আমরা যে প্রতিটি উপাদান আছে একটি বালতি মধ্যে (সঙ্গে ) যে এই ধরনের হয় । অতএব সমষ্টি থেকে বাকেট সমস্ত উপাদানের থেকে চেয়ে বেশী . But this sum is also less than thus and thus which gives us or .
satisfies (*) i.e. the -th element of is such that
দ্বারা 3. আমরা যে আছে , এর -th উপাদান , একটি বালতি থেকে আসে সঙ্গে অতএব ।
এই অ্যালগরিদমটি রৈখিক সময় নেয়।
এর গণনা রৈখিক সময় নেয়। বালতিগুলি একটি লিঙ্কযুক্ত-তালিকার সাথে কার্যকর করা যেতে পারে যার মধ্যে সন্নিবেশ এবং পুনরাবৃত্তি রয়েছে। নেস্টেড লুপটি যতগুলি উপাদান রয়েছে ততবার চালিত হয় (যেমন বার)।