এই একটি বিশেষ ক্ষেত্রে দেখা যায় নির্বাচন অ্যালগরিদম যে জানতে পারেন ম সঙ্গে একটি অ্যারের ক্ষুদ্রতম উপাদান অ্যারের আকার অর্ধেক। একটি বাস্তবায়ন রয়েছে যা সবচেয়ে খারাপ ক্ষেত্রে লিনিয়ার।কেkk
জেনেরিক নির্বাচন অ্যালগরিদম
প্রথমে আসুন একটি অ্যালগোরিদম দেখুন find-kth
যা একটি অ্যারের তমতম উপাদান খুঁজে পায় :k
find-kth(A, k)
pivot = random element of A
(L, R) = split(A, pivot)
if k = |L|+1, return pivot
if k ≤ |L| , return find-kth(L, k)
if k > |L|+1, return find-kth(R, k-(|L|+1))
ফাংশন split(A, pivot)
ফেরৎ L,R
যেমন যে সব উপাদান R
তার চেয়ে অনেক বেশী হয় pivot
এবং L
অন্যান্যদের (বিয়োগ এক সংঘটন pivot
)। তারপরে সবগুলি পুনরাবৃত্তভাবে করা হয়।
এই গড় কিন্তু সবচেয়ে খারাপ ক্ষেত্রে।ও ( এন 2 )O(n)O(n2)
A
এই মধ্যস্থদের অ্যারেতে প্রক্রিয়াটি কল করে 5 মাপের সাব অ্যারেগুলির সব মিডিয়ানের মধ্যস্থতাই হ'ল একটি ভাল পাইভট।
find-kth(A, k)
B = [median(A[1], .., A[5]), median(A[6], .., A[10]), ..]
pivot = find-kth(B, |B|/2)
...
এটি সমস্ত ক্ষেত্রে এর গ্যারান্টি দেয় । এটা যে সুস্পষ্ট নয়। এই পাওয়ারপয়েন্ট স্লাইডগুলি অ্যালগরিদম এবং জটিলতা উভয় ব্যাখ্যা করতে সহায়ক।O(n)
নোট করুন যে বেশিরভাগ সময় এলোমেলো পিভট ব্যবহার করা দ্রুত হয়।