שאלת מבחן במבוא למדעי המחשב - הטכניון 2020 - חיפוש בינארי

שאלה 2 (25 נקודות):

נתון מערך arr באורך שמכיל רצף של איברים עוקבים מסדרה חשבונית. תת-סדרה אחת של הסדרה החשבונית (באורך של איבר אחד לפחות) חסרה.

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

ממשו את הפונקציה



שמוצאת את האינדקס במערך בו היה אמור להופיע האיבר הראשון בתת-הסדרה החסרה.

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

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

זמן ____________ מקום נוסף _______
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
הטכניוןמועד ב2020סמסטר א
חיפוש בינארימערכיםסיבוכיות זמןסיבוכיות מקוםתת-סדרה
שימו לב שאם לא חסר כלום עד אינדקס , מתקיים בדיוק. תכונה זו מונוטונית — נסו להשתמש בה לחיפוש בינארי לאחר שתקבעו את מתוך שלושת האיברים הראשונים.
רעיון מרכזי: נשתמש בחיפוש בינארי כדי למצוא את האינדקס הראשון שבו הערך במערך סוטה מהערך הצפוי בסדרה.

שלב 1 – מציאת ההפרש

מכיוון שיש רק פער אחד רציף, לפחות שניים מתוך שלושת האיברים הראשונים arr[0], arr[1], arr[2] הם עוקבים בסדרה המקורית. לכן:



שלב 2 – תנאי העקביות

אם לא חסר כלום עד אינדקס , אז הערך הצפוי הוא:



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

שלב 3 – חיפוש בינארי

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


מימוש:



אימות עם הדוגמה: ,
  • חיפוש בינארי: : צפוי
  • : צפוי
  • : צפוי
  • , מוחזר 3


סיבוכיות:
  • זמן: — חיפוש בינארי על מערך באורך .
  • מקום נוסף: — רק משתנים בודדים.