חיפוש בינארי – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
מחיקת פקודות ופעולות מיותרות ('אחרת' לאחר תנאי המחזיר ערך, עיגול אוטומטי), המקשים על קריאת הקוד ועשויים להיחשב ככתיבה לקויה |
הנדב הנכון (שיחה | תרומות) |
||
שורה 97:
==חישוב ה[[סיבוכיות]]==
בידינו מערך בגודל <math>\ n</math> כלומר יש בו <math>\ n</math> איברים. בכל [[איטרציה]] (הפעלת האלגוריתם) אנו מצמצמים את המערך לחצי מגודלו, שכן אנו בטוחים שהאיבר אינו בחצי המערך השני ולכן אין אנו בודקים אותו יותר. לאחר איטרציה אחת יהיה גודל המערך <math>\frac{n}{2}</math>, לאחר שתי איטרציות יהיה גודלו <math>\frac{n}{2^2}</math>, לאחר שלוש איטרציות יהיה גודל המערך <math>\frac{n}{2^3}</math> וכן הלאה. התהליך ייגמר במקרה הגרוע ביותר כאשר
קיבלנו כי סיבוכיות התהליך היא <math>\ O(log(n))</math>. כלומר מספר הפעולות שאנו עושים '''קטן משמעותית''' (לוגריתמית) ממספר איברי המערך.
שורה 112:
|}
שים לב שהערכים בשורה העליונה הם המקומות במערך (Indexes) ואילו הערכים בשורה התחתונה
ננסה לחפש כעת, באמצעות אלגוריתם אריה במדבר, האם המספר 2 מופיע במערך. במערך עשרה איברים ולכן <math>\ n=10 </math>.
שורה 119:
1. '''אמצע <- 2 / (תחילת_מערך + סוף_מערך)'''
תחילת_מערך
2. '''אם מערך[אמצע] = ערך_מבוקש'''
שורה 140:
1. '''אמצע <- 2 / (תחילת_מערך + סוף_מערך)'''
תחילת_מערך
2. '''אם מערך[אמצע] = ערך_מבוקש'''
|