ViewWiki

שיעור 3 מתוך 4

חיפוש וחציה.

כ־20 דקות · 5 שאלות תרגול

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

שלב 1 מתוך 5 · חיפוש סדרתי

שלב 3 מתוך 5

כמה חציות

כמה חציות מקטינות רשימה של 1024 שמות לשם אחד? אותה שאלה, הפוך: כמה הכפלות לוקחות שם אחד ל־1024? בלוח, הגדילה בכל צעד קבועה על 2: כל צעד מכפיל את הערימה, ומספר הצעדים קובע כמה פעמים.

מספר ההכפלות של 2 שמגיעות ל־nn⁠ הוא הלוגריתם לפי בסיס שתיים, log⁡2n\log_2 n⁠. חיפוש בינארי ב־nn⁠ שמות ממוינים צריך בערך log⁡2n\log_2 n⁠ בדיקות.

לשאלה

שלב 4 מתוך 5

רשימה כפולה

חיפוש סדרתי ברשימה כפולה עובד פי שניים. ומה עם חיפוש בינארי? בלוח, הערימה בעשרה צעדים כבר מגיעה ל־1024.

לשאלה

שלב 5 מתוך 5

מיליון

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

לשאלה

סצנה אינטראקטיבית

הגרסה האינטראקטיבית נטענת…

כל שלב מכין לכם את הסצנה, ובקר שמסומן „קבוע” נשאר במקומו בשלב הזה.

לניסוי

תרגול · הגיעו למטרה

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

לניסוי

תרגול · נבאו, ואז הסתכלו

ב־1024 שמות ממוינים חיפוש בינארי צריך עשר בדיקות. כמה הוא יצטרך ב־2048 שמות, פי שניים?

לניסוי

תרגול · חשבו

ספר טלפונים ממוין של מיליון שמות. כמה בדיקות, לכל היותר, צריך חיפוש בינארי? (רמז: 210=10242^{10} = 1024⁠, כמעט אלף.)