שיעור 3 מתוך 4
חיפוש וחציה.
שתי דרכים למצוא שם ברשימה: לבדוק אחד אחד, או לפתוח באמצע ולהשליך חצי. למה חיפוש בינארי צריך רשימה ממוינת, ואיך הלוגריתם לפי בסיס שתיים סופר כמה חציות הוא צריך.
שלב 1 מתוך 5 · חיפוש סדרתי
שלב 1 מתוך 5
חיפוש סדרתי
הדרך הפשוטה ביותר למצוא שם ברשימה היא לעבור עליה מההתחלה, שם אחר שם, עד שמוצאים אותו. זה חיפוש סדרתי, והוא עובד על כל רשימה, גם לא ממוינת. כמה הוא עובד? כשמשווים אלגוריתמים שואלים בדרך כלל על המקרה הגרוע: מה הכי הרבה שהוא עלול לעשות.
שלב 2 מתוך 5
חיפוש בינארי
אף אחד לא מחפש מילה במילון כך. פותחים באמצע, רואים אם המילה שם באה לפני המילה שמחפשים או אחריה, ומשליכים את החצי השני. ואז שוב באמצע של מה שנשאר. זה חיפוש בינארי: כל בדיקה חוצה את הרשימה.
שלב 3 מתוך 5
כמה חציות
כמה חציות מקטינות רשימה של 1024 שמות לשם אחד? אותה שאלה, הפוך: כמה הכפלות לוקחות שם אחד ל־1024? בלוח, הגדילה בכל צעד קבועה על 2: כל צעד מכפיל את הערימה, ומספר הצעדים קובע כמה פעמים.
מספר ההכפלות של 2 שמגיעות ל־ הוא הלוגריתם לפי בסיס שתיים, . חיפוש בינארי ב־ שמות ממוינים צריך בערך בדיקות.
שלב 4 מתוך 5
רשימה כפולה
חיפוש סדרתי ברשימה כפולה עובד פי שניים. ומה עם חיפוש בינארי? בלוח, הערימה בעשרה צעדים כבר מגיעה ל־1024.
שלב 5 מתוך 5
מיליון
מבט פנימה פתוח על סולם לוגריתמי: כל הכפלה מעלה את הערימה באותו גובה, ולכן הגדילה המעריכית היא קו ישר. הלוגריתם הופך כפל לחיבור, ולכן גם רשימות ענק צריכות מעט חציות. לוח של שנים־עשר צעדים מגיע רק ל־4096; את המיליון חשבו בעצמכם.
הגרסה האינטראקטיבית נטענת…
הגרסה האינטראקטיבית נטענת…
כל שלב מכין לכם את הסצנה, ובקר שמסומן „קבוע” נשאר במקומו בשלב הזה.
תרגול · חשבו
ברשימה לא ממוינת של 1000 שמות מחפשים שם אחד, ובודקים אותם אחד אחד מההתחלה: חיפוש סדרתי. במקרה הגרוע ביותר, כמה שמות צריך לבדוק?
תרגול · חשבו
ברשימה לא ממוינת של 1000 שמות מחפשים שם אחד, ובודקים אותם אחד אחד מההתחלה: חיפוש סדרתי. במקרה הגרוע ביותר, כמה שמות צריך לבדוק?
תרגול · בחרו
חיפוש בינארי פותח את הרשימה באמצע, בודק אם השם שם בא לפני השם שמחפשים או אחריו, ומשליך את החצי שבו השם לא יכול להיות. מה חייב להיות נכון ברשימה?
תרגול · בחרו
חיפוש בינארי פותח את הרשימה באמצע, בודק אם השם שם בא לפני השם שמחפשים או אחריו, ומשליך את החצי שבו השם לא יכול להיות. מה חייב להיות נכון ברשימה?
תרגול · הגיעו למטרה
בלוח, כל צעד מכפיל את הערימה פי 2; חיפוש בינארי הולך באותה דרך הפוך, וחוצה. שנו את מספר הצעדים עד שהעמודה האחרונה מגיעה ל־1024, ולחצו על בדיקה. זה מספר החציות שמקטינות 1024 שמות לשם אחד.
תרגול · הגיעו למטרה
בלוח, כל צעד מכפיל את הערימה פי 2; חיפוש בינארי הולך באותה דרך הפוך, וחוצה. שנו את מספר הצעדים עד שהעמודה האחרונה מגיעה ל־1024, ולחצו על בדיקה. זה מספר החציות שמקטינות 1024 שמות לשם אחד.
תרגול · נבאו, ואז הסתכלו
ב־1024 שמות ממוינים חיפוש בינארי צריך עשר בדיקות. כמה הוא יצטרך ב־2048 שמות, פי שניים?
תרגול · נבאו, ואז הסתכלו
ב־1024 שמות ממוינים חיפוש בינארי צריך עשר בדיקות. כמה הוא יצטרך ב־2048 שמות, פי שניים?
תרגול · חשבו
ספר טלפונים ממוין של מיליון שמות. כמה בדיקות, לכל היותר, צריך חיפוש בינארי? (רמז: , כמעט אלף.)
תרגול · חשבו
ספר טלפונים ממוין של מיליון שמות. כמה בדיקות, לכל היותר, צריך חיפוש בינארי? (רמז: , כמעט אלף.)
השיעור הושלם. עניתם על כל שאלות התרגול בו.