سوال ۳

می‌دانیم مشکل اصلی $Quicksort$ در پیدا کردن کلید قسمت Partition است. به‌طوری که اگر کلید عنصر مناسبی باشد دو زیر مسئله ما اندازه‌های برابر (و مساوی $\frac{n}{2}$) خواهند داشت و اگر کلید عنصر مناسبی از آب در نیاید، رابطه بازگشتی ما کُند خواهد بود.

برای حل این مشکل، علی قسمت انتخاب کلید تابع Parition را (که روی زیرآرایه‌ی $n=r-l+1$ ،عنصری $A[l..r]$ اجرا می‌شود)، به صورت زیر می‌نویسد.

دقت کنید که کل این رویه ۵ مرحله‌ای قرارست جایگزین $key \leftarrow A[random(l..r)]$ بشود.

آیا با این کارِ علی تغییری در بهترین و بدترین زمان اجرای الگوریتم $QuickSort$ به‌وجود می‌آید؟ جواب خود را در صورت لزوم با مثال و رابطه‌بازگشتی و یا اثبات بیان کنید.