ערכתי לאחרונה בתאריך 14.04.09 בשעה 13:09 בברכה, xzoooooom
נתנו לנו לבנות BINARY HEAP שהשורש הוא מקסימום ואחר כך האבות ואז הבנים... עכשיו בניתי אותו והכל
וביקשו מאיתנו לעשות כזה דבר:מקבל מערך מסוג ()()int-לא הצלחתי לעשות סוגריים מרובעים- שבפנים ממוינים עם מספרים מהגדול לקטן..
צריך בעזרת ה BinaryHeap למיין את המספרים של כל המערכים
וליצור מערך חדש ממוין מהמספר הגדול ביותר לקטן ביותר..
עכשיו הקטע שנגיד אני מקבל 3 מערכים. הBinaryHeap שאני בונה מכיל
בתוכו 3 נודים (הגודל כמספר המערכים).
מכניס מכל אחד מ3 המערכים את המספר הראשון במערך(שהוא הגדול ביותר)
ואז בBinaryHeap אני עושה לו deleteMAX ומוציא לי את השורש ומכניס אותו
לתוך המערך החדש.
הקטע שבאלגוריתם צריך שהמספר שיצא מה BinaryHeap צריך שבמקומו יכנס ל
BinaryHeap האיבר הבא מהמערך הקדום שממנו הגיע המספר..
ואני לא בידיוק יודע איך לדעת עבור איזה מספר שיוצא מהBinaryHeap
איך בידיוק לדעת מאיזה מערך מקורי הוא הגיע?
חשבתי על לבנות מערך נוסף כגודל מספר המערכים שבפנים שמור
נגיד בהתחלה כל אחד מהמספרים בתאים הראשונים של כל מערך.
כלומר אם ממערך מספר 1 הגיע הסיפרה 7 אז במערך האינדס הוא במקום 1
אם הסיפרה 8 הגיע ממערך מספר 3 אז הסיפרה 8 תהיה בתא מס' 3..
הקטע שזה לא נראה לי הכי יעיל בידיוק..
כי אם יש לי נגיד 10 מערכים בגודל 10..
זה כאילו היעילות שלי תהיה ב n^2, האם יש דרך יעילה יותר? תודה!
