זמן ריצה לינארי

מתוך ויקיפדיה, האנציקלופדיה החופשית

סיבוכיות זמן של אלגוריתם היא לינארית אם זמן הריצה חסום על ידי פונקציה לינארית בגודל הקלט, או - באופן בלתי פורמלי - פרופורציונלי לאורך הקלט.

לדוגמה, אלגוריתם אשר מחפש את המספר הגדול ביותר ברשימת מספרים נתונה על ידי מעבר סדרתי על הרשימה הינו הוא בעל זמן ריצה לינארי שכן אם גודל הקלט הוא n, האלגוריתם יבצע n צעדים.

מאידך, אלגוריתם מיון אשר ממיין רשימת מספרים על ידי בחירת המספר הגדול ביותר והסרתו מהרשימה, בחירת השני בגודלו והסרתו, וכן הלאה, אינו בעל זמן ריצה לינארי. זאת משום אם שגודל הקלט הוא n, האלגוריתם מבצע n שלבים, ובכל שלב מבצע בממוצע n/2 צעדים (מעבר על כל המספרים שנותרו) ולכן זמן הריצה יהיה ריבועי.

זמן ריצה לינארי הוא בפרט פולינומיאלי ובפרט נחשב חישוב יעיל.

שפות אחרות