کپه‌ی بازگشتی

رویه‌ی Build-Heap را برای تبدیل آرایه‌ی $A[1..n]$ به‌یک هیپ در نظر بگیرید:

Build-Heap($A$)

  1. for $i\leftarrow \lfloor Length(A)/2 \rfloor$ downto $1$
  2. do Bubble-Down(A, i);
  1. رویه‌ی فوق را به صورت رویه‌ی بازگشتی Recursive-Build-Heap($A, i$) به زبان $CLRS$ بازنویسی کنید، طوری که $A[i]$ ریشه‌ی«زیر-هیپ»ی است که قرار است ساخته شود. برای تبدیل کل آرایه به‌یک هیپ باید رویه را به‌صورت Recursive-Build-Heap($A,1$) فرا بخوانیم.
  2. زمان اجرای الگوریتم خود را در بدترین حالت، به‌صورت یک رابطه‌ی بازگشتی بنویسید.
  3. رابطه‌ی بازگشتی به‌دست آمده را با استفاده از قضیه‌ی اصلی حل کنید.