מימוש (חלק 2)
שיעור 6 מתוך 9 בקורס מיון ערימה – סדרת DSA של Coddy.
כעת נשלב את בניית הערימה עם חילוץ חוזר של הערך המרבי.
אתגר
בינוניעכשיו נחבר את הכול יחד לאלגוריתם המלא.
כתבו פונקציה בשם heapSort שמקבלת מערך של מספרים שלמים ומחזירה אותו ממוין בסדר עולה.
תחילה בנו ערימת מקסימום על ידי סינון כלפי מטה של כל צומת שאינו עלה, מהאינדקס n/2 - 1 ועד 0. לאחר מכן החליפו שוב ושוב בין השורש (הערך הגדול ביותר) לבין האיבר האחרון בערימה, הקטינו את הערימה באחד וסננו את השורש החדש כלפי מטה.
השתמשו בפונקציית עזר לסינון כלפי מטה שמקבלת את
sizeהנוכחי של הערימה, כדי שתוכלו להקטין את הערימה תוך כדי התהליך.
נסו בעצמכם
#include <stdlib.h>
int* heapSort(int* arr, int arr_size, int* returnSize) {
// כתבו כאן את הקוד
*returnSize = arr_size;
return arr;
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מיון ערימה – סדרת DSA
תרגלו בעצמכם: קומפיילר C אונליין