5 תשובות
איך מחשבים סיבוכיות זמן ריצה?
שואל השאלה:
לכל קוד יש סיבוכיות שונה . צריך לצאת מנקודת הנחה בבדיקת סיבוכיות שהולכים על ה worst case כלומר אם יש if x ואחריו פקודה ואז else ואחריו חמש פקודות יוצאים מנקודת הנחה שנכנסים ל else ׁ(בהנחה והתנאי לif הוא לא בהרכח true ועשוי להשתנות מהרצה להרצה) לכל פקודה בסיסית של קלט פלוט או whatever יש סיבוכיות זמן ריצה של 1. בלולאות זה קצת שונה .. בלולאת for לולאה רצה n פעמים אז אם בלולאה יש 2 פקודות סיבוכיות זמן הריצה היא 4n+2 מכיוון שיש בכל n פעמים שתי פקודות ובתוך הפור עצמו מתבצעות וגם גם יש שתי פעולות של ה for(בדיקת תנאי וקידום באחד) ה+2 זה כי נותנים ל i ערך וגם שהלולאה נגמרת היא שואלת את עצמה האם i > x כלומר יש עוד פקודה ולכן ה +2.
בלואת while עם 2 פקודות הסיביות היא 2n+1
וואו תודה על ההסבר המפורט.
מה לגבי מעבר על מערך דו מימדי ומערך?
שואל השאלה:
אותו דבר כל פקודה עם סיבוכיות 1 בין אם זה הכנסה למערך או כל דבר אחר . רק בהתעסקות עם לולאות רקורסיות עצים מחסנית ותור יש באמת הבדל . בבגרויות ישאלו במקסימום על סיבוכיות של קוד עם לולאה או לולאה מקוננת כי השאר לא בתוכנית לימוד
לך תלמד ערימות מקסימום למינימום ועץ מאוזן