المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۶:الگوریتم ها:سوال ۶

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

رویه‌ی 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. رابطه‌ی بازگشتی به‌دست آمده را با استفاده از قضیه‌ی اصلی حل کنید.

ابزار صفحه