סיבוכיות חישובית מודדת כמה זמן או זיכרון נדרשים לאלגוריתם בהתאם לגודל הקלט. אנחנו משתמשים בכתיב (O) (Big O) כדי לתאר חסם עליון אסימפטוטי – כלומר איך הגדילה מתנהגת עבור קלטים גדולים מאוד.
האלגוריתם מבצע מספר קבוע של פעולות שאינן תלויות בגודל הקלט.
int x = arr[0];
System.out.println(x);
מספר הפעולות פרופורציונלי לגודל הקלט.
for (int i = 0; i < n; i++) {
System.out.println(i);
}
הלולאות תלויות בשני גדלים שונים, לדוגמה גובה ורוחב מטריצה.
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
process(i, j);
}
}
כל איבר בקלט עובר על כל האיברים האחרים.
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
compare(i, j);
}
}
הקלט מצטמצם כל פעם בחצי (או במנה קבועה אחרת).
int i = n;
while (i > 1) {
i = i / 2;
}
בניתוח סיבוכיות נרצה בדרך כלל להתמקד בחלק הדומיננטי ביותר – זה שמכתיב את קצב הגדילה האסימפטוטי.