روش تبدیل یک لیست صعودی از اعداد به max heap - نسخهی قابل چاپ |
روش تبدیل یک لیست صعودی از اعداد به max heap - peace2013 - 17 فروردین ۱۳۹۶ ۰۸:۳۷ ب.ظ
روش تبدیل یک لیست صعودی از اعداد به max heap |
RE: روش تبدیل یک لیست صعودی از اعداد به max heap - msour44 - 18 فروردین ۱۳۹۶ ۰۲:۱۹ ق.ظ
سلام از اخرین نود داخلی یعنی ۷ تابع heapfiy را فراخوانی می کنیم تا ریشه(شروع ارایه از ۱) با فراخوانی heapify رو ۷ باعث تعویض ۷ با تنها فرزندش یعنی ۱۴ می شود (تا اینجا در مکان هفتم عدد ۱۴ قرار دارد) با فراخوانی رو ۶ عدد ۱۳ با ۶ جابجا می شود به همین ترتیب روی ۵ و ۴ فراخوانی می کنیم که ۵ با ۱۱ و ۴ با ۹ تعویض می شود با فراخوانی روی ۳ که الان دو فرزند ۱۴(در مکان هفتم) و ۱۳ دارد ۳ با ۱۴ تعویض می شود(تا اینجا در مکان ۷ عدد ۳ قرار دارد) دوباره با فراخوانی روی ۳ باعث تعویض با ۷ می شود(دوباره ۷ در مکان ۷ قرار می گیرد) با فراخوانی روی ۲ هم ۱۱ به مکان دوم می رود و... با فراخوانی روی یک(ریشه) که الان دو فرزند ۱۴ و ۱۱ دارد یک با ۱۴ تعویض می شود به صورت بازگشتی تابع روی عدد۱(در مکان ۳) فراخوانی میشود که دو فرزند ۱۳ و ۷ دارد پس یک با ۱۳ تعویض می شودو بعد از ان با ۱۲ پس در مکان هفتم همان ۷ در نهایت باقی می ماند.گزینه ۳ |
RE: روش تبدیل یک لیست صعودی از اعداد به max heap - peace2013 - 18 فروردین ۱۳۹۶ ۰۹:۳۵ ق.ظ
ممنونم از جوابتون (۱۸ فروردین ۱۳۹۶ ۰۲:۱۹ ق.ظ)msour44 نوشته شده توسط: از اخرین نود داخلی یعنی ۷ تابع heapfiy را فراخوانی می کنیم تا ریشه(شروع ارایه از ۱)همیشه باید از آخرین نود داخلی شروع کنیم؟؟ |
RE: روش تبدیل یک لیست صعودی از اعداد به max heap - msour44 - 18 فروردین ۱۳۹۶ ۰۲:۴۰ ب.ظ
(۱۸ فروردین ۱۳۹۶ ۰۹:۳۵ ق.ظ)peace2013 نوشته شده توسط: ممنونم از جوابتونسلام استفاده از واژه همیشه کمی خطرناک است ولی رویه معمول که در کتاب های کورمن و قدسی هم به ان اشاره شده شروع از اخرین نود داخلی است درواقع برگ ها خود خاصیت هیپ دارند. |