בהמשך לטיפ היומי של אתמול,
ראינו שהכנסה לSortedList היא מאוד לא יעילה, מאחר ובכל הכנסה מתבצעת העתקה של שני המערכים השמורים.
לפעמים חשוב לנו שהמידע ישאר ממוין, אבל גם שההכנסות תהיינה מהירות. בשביל לפתור בעיה זו, אפשר להשתמש במבנה נתונים אחרים ששמו SortedDictionary
השימוש זהה לחלוטין כמו לSortedList שראינו אתמול:
|
|
אבל הכנסות הן יותר מהירות. בעצם מה שקורה זה שמאחורי הקלעים נשמר עץ אדום שחור כך שהכנסות הן די מהירות $ O\left(\log n \right) $.
כמובן, יש אפשרות גם להשתמש בComparer לפיו להשוות איברים
אז למה שבכלל תרצו להשתמש בSortedList?
יש מספר סיבות:
- SortedDictionary מחזיק מבנה של עץ אדום שחור. זהו מבנה יותר מסובך ולכן יותר כבד מ"סתם" שני מערכים ולכן מצריך יותר זכרון
- לSortedList יש יתרון אדיר על פני SortedDictionary – הוא מאפשר גישה גם לפי אינדקס: מאחר ואנחנו מחזיקים בסה"כ שני מערכים, אנחנו מסוגלים לגשת לאיבר שנמצא, למשל, במקום 31 בסידור הממוין, ב$ O \left(1 \right)$
המשך יום ממוין (שמשתנה יחסית הרבה)