חיפוש בינארי

MaD-d0g

New member
חיפוש בינארי

שלום לכולם, אני מעוניין לכתוב פונקציה שתחזיר לי מיקום ראשון ומיקום אחרון של איבר מסויים במערך. אני רוצה לעשות את זה בחיפוש בינארי (יעילות..) הצלחתי לעשות חיפוש בינארי רגיל, כמו שאני יודע. אבל עבור הקלט:
{1, 2, 3, 4 ,4 , 4, 4, 4, 5, 6, 7} BinSearch(4, 0, 10)​
קיבלתי תוצאה של 5. הפלט הרצוי היה אמור להיות 3 (ויהיה נחמד אם אני אוכל לקבל גם 7, האיבר האחרון במערך) מישהו יכול לעזור
תודה מראש
 

זאינאל

New member
אבל 5 הוא הפלט הנכון

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

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