ההבדל בין חיפוש לינארי לחיפוש בינארי
תוֹכֶן
חיפוש לינארי וחיפוש בינארי הן שתי השיטות המשמשות במערכים עבור חיפוש היסודות. חיפוש הוא תהליך של איתור אלמנט ברשימת האלמנטים המאוחסנים בסדר כלשהו או באופן אקראי.
ההבדל העיקרי בין חיפוש לינארי לחיפוש בינארי הוא שלחיפוש בינארי לוקח פחות זמן לחפש אלמנט מרשימת האלמנטים הממוינים. כך ניתן להסיק כי היעילות של שיטת חיפוש בינארית גדולה יותר מחיפוש לינארי.
הבדל נוסף בין השניים הוא שקיימת תנאי הכרחי לחיפוש הבינארי, כלומר האלמנטים חייבים להיות ממוין בעוד שבחיפוש לינארי אין תנאי מוקדם כזה. אם כי שתי שיטות החיפוש משתמשות בטכניקות שונות אשר נדונו בהמשך.
- טבלת השוואה
- הגדרה
- הבדלים עיקריים
- סיכום
טבלת השוואה
בסיס להשוואה | חיפוש לינארי | חיפוש בינארי |
---|---|---|
מורכבות זמן | O (N) | O (יומן 2 N) |
זמן המקרה הטוב ביותר | אלמנט ראשון O (1) | מרכיב מרכזי O (1) |
תנאי מוקדם למערך | לא נדרש | המערך חייב להיות בסדר ממוין |
המקרה הגרוע ביותר עבור מספר N של אלמנטים | יש צורך בהשוואות | יכול לסיים אחרי יומן בלבד2 השוואות N |
ניתן ליישום ב- | מערך ורשימה מקושרת | לא ניתן ליישם ישירות ברשימה המקושרת |
הכנס פעולה | מוכנס בקלות בסוף הרשימה | דרוש עיבוד כדי להכניס אותו למקום הראוי לשמירה על רשימה ממוינת. |
סוג האלגוריתם | איטרטיבי באופיו | להתחלק ולכבוש בטבע |
שימושיות | קל לשימוש וללא צורך באלמנטים מסודרים. | בכל מקרה אלגוריתם ואלמנטים מסובכים צריכים להיות מסודרים לפי הסדר. |
שורות קוד | פחות | יותר |
הגדרה של חיפוש לינארי
בחיפוש לינארי, כל אלמנט של מערך מוחזר בזה אחר זה בסדר הגיוני ובודק אם הוא אלמנט רצוי או לא. חיפוש לא יצליח אם לגשת אל כל האלמנטים והאלמנט הרצוי לא נמצא. במקרה הגרוע ביותר, מספר המקרים הממוצע שאולי נצטרך לסרוק מחצית מגודל המערך (n / 2).
לכן ניתן להגדיר חיפוש לינארי כטכניקה החוצה את המערך ברצף לאיתור הפריט הנתון. התוכנית שניתנה להלן ממחישה חיפוש של אלמנט במערך באמצעות חיפוש.
יעילות של חיפוש לינארי
צריכת הזמן או מספר ההשוואות שבוצעו בחיפוש ברשומה בטבלת חיפוש קובעים את יעילות הטכניקה. אם הרשומה הרצויה קיימת במיקום הראשון של טבלת החיפוש, רק השוואה אחת נעשית. כאשר הרשומה הרצויה היא האחרונה, יש לערוך n השוואה. אם הרשומה תוצג איפשהו בטבלת החיפוש, בממוצע, מספר ההשוואות יהיה (n + 1/2). היעילות הגרועה ביותר של טכניקה זו היא O (n) מייצג את סדר הביצוע.
תוכנית C לחפש אלמנט עם טכניקת חיפוש לינארית.
# כלול חיפוש בינארי הוא אלגוריתם יעיל במיוחד. טכניקת חיפוש זו צורכת פחות זמן בחיפוש בפריט הנתון בהשוואה מינימלית אפשרית. קודם לבצע את החיפוש הבינארי, עלינו למיין את רכיבי המערך. ההיגיון מאחורי טכניקה זו ניתן להלן: ישנם שלושה מקרים שעלולים להיווצר: חזור על אותם צעדים עד שיימצא אלמנט או מתיש באזור החיפוש. באלגוריתם זה, כל פעם שאזור החיפוש מצטמצם. לכן מספר ההשוואות הוא לכל היותר ביומן (N + 1). כתוצאה מכך, מדובר באלגוריתם יעיל בהשוואה לחיפוש לינארי, אך יש למיין את המערך לפני שתבצע את החיפוש הבינארי. תוכנית C למצוא אלמנט עם טכניקת חיפוש בינארית. # כלול אלגוריתמי חיפוש לינאריים וגם בינאריים יכולים להועיל בהתאם ליישום. כאשר מערך הוא מבנה הנתונים והרכיבים מסודרים בסדר ממוין, אז עדיף חיפוש בינארי מהירחיפוש. אם הרשימה המקושרת היא מבנה הנתונים ללא קשר לאופן סידור האלמנטים, חיפוש לינארי מאומץ עקב חוסר זמינות של יישום ישיר של אלגוריתם החיפוש הבינארי. לא ניתן להשתמש באלגוריתם החיפוש הבינארי האופייני לרשימה המקושרת מכיוון שהרשימה המקושרת הינה דינאמית ולא ידוע היכן מוקצה למעשה האלמנט האמצעי. מכאן שיש דרישה לתכנן את הווריאציה של אלגוריתם החיפוש הבינארי שיכול לעבוד גם על רשימה מקושרת מכיוון שהחיפוש הבינארי מהיר יותר בביצוע מאשר חיפוש לינארי.הגדרה של חיפוש בינארי
סיכום