এটা তোলে যদি আপনার সাথে নির্বাচন করতে পারবেন একটি খোলা সমস্যা সময় এবং ইনপুট (দেখুন পরিবর্তন না করে অতিরিক্ত মেমরি কোষ এখানে )। তবে আপনি এটি খুব কাছাকাছি আসতে পারেন।O(n)O(1)
মুনরো এবং রমন নির্বাচনের জন্য একটি অ্যালগরিদম প্রস্তাব করেছিলেন যা কেবল অতিরিক্ত স্টোরেজ (কোষ) ব্যবহার করার সময় সময়ে সঞ্চালিত হয় । এই অ্যালগরিদম ইনপুটটি অপরিবর্তিত রেখে দেয়। আপনি যে কোনও ছোট বেছে নিতে পারেন ।O(n1+ε)O(1/ε)ε>0
এর মূল অংশে, মুনরো এবং রামানের অ্যালগোরিদমটি ক্লাসিকাল অ্যালগোরিদম হিসাবে কাজ করে : এটি একটি বাম এবং ডানদিকের আবদ্ধ (যা ফিল্টার নামে পরিচিত ) বজায় রাখে , যা পরিচিত পদযুক্ত দুটি উপাদান। অনুরোধকৃত উপাদানটি দুটি ফিল্টার (র্যাঙ্ক-ওয়াইজ) এর মধ্যে রয়েছে। একটি ভাল পাইভট উপাদান আমরা ফিল্টারগুলি এবং বিপরীতে সমস্ত সংখ্যা পরীক্ষা করতে পারি । এটি ফিল্টারগুলি আপডেট করা সম্ভব করে এবং চেক করার জন্য অবশিষ্ট পদার্থের সংখ্যা হ্রাস করে (র্যাঙ্ক-ওয়াইজ)। আমরা অনুরোধের উপাদান না পাওয়া পর্যন্ত পুনরাবৃত্তি করি।O(n)pp
ধ্রুপদী অ্যালগরিদমের চেয়ে আলাদা যা পছন্দ । যাক জন্য অ্যালগরিদম যে সমাধান নির্বাচন হতে । অ্যালগোরিদম সমান আকারের ব্লকে অ্যারে ভাগ করে এবং এমন একটি ব্লক চিহ্নিত করে যেখানে অনেক উপাদান রয়েছে, যার র্যাঙ্কগুলি ফিল্টারগুলির মধ্যে রয়েছে (কবুতর-গর্ত নীতি দ্বারা অস্তিত্ব)। এই ব্লকটি তখন অ্যালগোরিদম সাহায্যে একটি ভাল পাইভট উপাদানটির জন্য স্ক্যান করা হবে । পুনরাবৃত্তি অ্যাঙ্করটি তুচ্ছ অ্যালগরিদম। ডান ব্লকের আকার (এবং গণিতে করছেন) আপনাকে উপরে বর্ণিত সময় এবং স্থানের প্রয়োজনীয়তার প্রয়োজন দেয়।pA(k)ε=1/kA(k)A(k−1)A(1)
বিটিডব্লিউ, আপনি যে অ্যালগরিদমগুলি সন্ধান করছেন, তাদের নাম সম্প্রতি ধ্রুবক-কার্য-স্থান অ্যালগরিদম হয়েছে ।
আমি কোন নিম্ন সীমা সম্পর্কে অবগত নই।