האם אתה יכול לחפש בינארי ברשימה מקושרת?
האם אתה יכול לחפש בינארי ברשימה מקושרת?
Anonim

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

רק אז, מה תהיה מורכבות הזמן כאשר חיפוש בינארי מיושם ברשימה מקושרת?

מורכבות הזמן לא צריך להיות יותר מ-O(log n). כפי ש רשימה מקושרת עושה זאת לא לספק גישה אקראית אם ננסה להחיל חיפוש בינארי אלגוריתם את זה רָצוֹן להגיע ל-O(n) כפי שאנו צריכים למצוא אורך של רשימה וללכת לאמצע.

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

מזה, באיזו שיטה משתמש חיפוש בינארי כדי למצוא אלמנט ברשימה?

חיפוש בינארי עובד על מערכים ממוינים. חיפוש בינארי מתחיל בהשוואה של an אֵלֵמֶנט באמצע המערך עם המטרה ערך . אם המטרה ערך תואם את אֵלֵמֶנט , המיקום שלו במערך מוחזר. אם המטרה ערך הוא פחות מה אֵלֵמֶנט , ה לחפש ממשיך בחצי התחתון של המערך.

איך חוזרים דרך רשימה מקושרת?

א איטרטור ניתן להשתמש בלולאה דרך an רשימה מקושרת . השיטה hasNext() מחזירה true אם יש יותר אלמנטים ב רשימה מקושרת ושקר אחרת. השיטה next() מחזירה את האלמנט הבא ב- רשימה מקושרת וזורק את החריג NoSuchElementException אם אין אלמנט הבא.

מוּמלָץ: