הרעיון

חיפוש לינארי עובר על כל איבר במערך מההתחלה לסוף. אם מצאנו את הערך המבוקש – מחזירים את האינדקס (או true). אם הגענו לסוף בלי למצוא – הערך לא קיים.

8 3 15 7 22 1 [0] [1] [2] [3] ✓ [4] [5] מצאנו 7!
חיפוש הערך 7: בודקים 8, 3, 15 ואז מוצאים 7 באינדקס 3.

גרסה 1: החזרת אינדקס

public static int linearSearch(int[] arr, int key) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == key)
            return i;
    }
    return -1; // לא נמצא
}

גרסה 2: החזרת boolean

public static boolean contains(int[] arr, int key) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == key)
            return true;
    }
    return false;
}

חיפוש במערך של עצמים

public static Student findByName(Student[] arr, String name) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i].getName().equals(name))
            return arr[i];
    }
    return null;
}

שימו לב: להשוואת מחרוזות משתמשים ב-equals ולא ב-==.

חיפוש ההופעה האחרונה

public static int lastIndexOf(int[] arr, int key) {
    for (int i = arr.length - 1; i >= 0; i--) {
        if (arr[i] == key)
            return i;
    }
    return -1;
}

סיבוכיות

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

שאלות נפוצות

למה מחזירים -1 כשלא מוצאים?

כי -1 הוא אינדקס לא חוקי (אינדקסים מתחילים מ-0). זה סימן מוסכם שהערך לא נמצא.

חיפוש לינארי עובד רק על מערכים ממוינים?

לא! חיפוש לינארי עובד על כל מערך – ממוין או לא. זה אחד היתרונות שלו. חיפוש בינארי, לעומתו, דורש מערך ממוין.

מתי עדיף חיפוש בינארי?

כשהמערך ממוין. חיפוש בינארי הוא O(log n) – הרבה יותר מהיר עבור מערכים גדולים.

צריכים עזרה באלגוריתמים?

מורים פרטיים ילמדו אתכם חיפוש, מיון ואלגוריתמיקה.

מצאו מורה פרטי