ערכתי לאחרונה בתאריך 26.09.13 בשעה 01:25 בברכה, ShocKi
לא הבנתי את הפתרון שאתה מציע... איך אתה מבצע את שלבים 2 ו 5?
אתה כותב בשלב 2 שאתה מקצה מערך דימני עבור הרשימה משלב 1... ואז אתה מתעלם מזה שביצעת את ההקצאה הזאת, בשלב 5 אתה מבקש למזג את הרשימה למערך הקיים. מי זה המערך הקיים? אגב, כשאתה אומר למזג, אתה צריך להגיד איך למזג אחרת אתה לא יכול לטעון שאתה עומד בדרישות סיבוכויות.. כי לא תמיד אפשר למזג דברים במעבר ליניארי. אתה צריך להראות שאפשר.באופן כללי מה שנראה לי כדאי לעשות הוא :
1. בתחילת התהליך הקצאה דינאמית של מערך יחיד בגודל n (סיבוכיות O(1) או O(n) תלוי במערכת ההפעלה...)
2. לרוץ בלולאה על הרשימה (מספר הריצות יהיה n כמספר הנתונים)
3. בכל איטרציה לרוץ על מספר הרשימות (k) להציב את הערך הראשון ברשימה הראשונה למשתנה min ואת המספר 1 לindex ואז להמשיך ריצה על הרשימות האחרות, אם הערך בראש הרשימה שם קטן יותר מהmin אז לעדכן את min ולעדכן את מספר הרשימה ל index (אלגוריתם מציאת min סטנדרטי), מובטח לנו שבכל איטרציה נמצא את המינימום הקיים כי כל הרשימות ממוינות ולכן הערך המינימלי הוא בהכרח אחד מהערכים בראשי הרשימות. בסוף התהליך להציב את המספר min לתוך המערך ולקדם את האינדקס שלו + מחיקת min מהרשימה לפי מספר הרשימה ששמרת ב index, המחיקה של הערך כולל תיקון פוינטרים היא ב O(1) כי יודעים ישר לאן לגשת. סה"כ O(k)..
לכן זה יוצא O(k*n)
קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.