חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

Σχετικά έγγραφα
חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

מבני נתונים ויעילות אלגוריתמים

תורת הגרפים - סימונים

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

ל הזכויות שמורות לדפנה וסטרייך

logn) = nlog. log(2n

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

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

מתמטיקה בדידה תרגול מס' 13

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

חורף תש''ע פתרון בחינה סופית מועד א'

מבני נתונים ואלגוריתמים תרגול #8-9

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

אלגוריתמים בתורת הגרפים חלק ראשון

אלגוריתמים / תרגיל #1

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

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

שאלה 1 V AB פתרון AB 30 R3 20 R

תרגול מס' 6 פתרון מערכת משוואות ליניארית

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

מבני נתונים ואלגוריתמים תרגול #11

אלגברה ליניארית (1) - תרגיל 6

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

תרגול פעולות מומצאות 3

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

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

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

מבני נתונים עצים שיעור 7

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

רשימת בעיות בסיבוכיות

. {e M: x e} מתקיים = 1 x X Y

gcd 24,15 = 3 3 =

מבני נתונים (234218) 1

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

מבני נתונים ויעילות אלגוריתמים

סדרות - תרגילים הכנה לבגרות 5 יח"ל

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

תרגיל 13 משפטי רול ולגראנז הערות

{ : Halts on every input}

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

co ארזים 3 במרץ 2016

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

אלגוריתמים בתורת הגרפים חלק שני

אלגוריתמים 1, סמסטר אביב 2017

מתמטיקה בדידה תרגול מס' 12

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

3-9 - a < x < a, a < x < a

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

סיכום- בעיות מינימוםמקסימום - שאלון 806

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

אינפי - 1 תרגול בינואר 2012

מבנה נתונים סיכומי הרצאות

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

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

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

Nir Adar גירסה 1.00 עמוד 1

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

אלגברה לינארית (1) - פתרון תרגיל 11

דיאגמת פאזת ברזל פחמן

אלגוריתמים בתורת הגרפים חלק רביעי

1 סכום ישר של תת מרחבים

הגדרה: מצבים k -בני-הפרדה

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

מודלים חישוביים פתרון תרגיל 5

Nir Adar

השאלות..h(k) = k mod m

אוניברסיטת בר אילן מבני נתונים תרגולים מרצה: פרופ' שמואל טומי קליין סמסטר ב', תש"ע

The No Arbitrage Theorem for Factor Models ג'רמי שיף - המחלקה למתמטיקה, אוניברסיטת בר-אילן

אלגברה מודרנית פתרון שיעורי בית 6

Logic and Set Theory for Comp. Sci.

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

יווקיינ לש תוביציה ןוירטירק

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

Transcript:

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

מבני נתונים ויעילות אלגוריתמים (21.1.2015).1 עצי AVL עבור עצי חיפוש בינארי, ראינו שפעולות עליהן עשויות להתבצע בזמן לינארי (אם העץ בלתי מאוזן, ונראה כמו "שרוך"), או בזמן לוגריתמי (אם העץ מאוזן). אולם לא הגדרנו באופן פורמלי מהו עץ 'מאוזן'. ישנן כמה דרכים להגדיר איזון של עץ. נכיר אחת מהן, שנקראת עץ AVL (על שם שני מתמטיקאים סובייטיים, Georgy Adelson-Velskii ו- Landis,Evgenii שפיתחו שיטה זו ב- 1962 ). עבור כל צומת v בעץ בינארי, נסמן ב-( v ) h L את גובה תת-העץ השמאלי של v, וב-( v ) h R את גובה תת-העץ הימני של.v כמו כן נגדיר את גורם האיזון Factor) (Balance של צומת v בתור ההפרש: (v). BF(v) = h L (v) - h R עץ AVL הוא עץ חיפוש בינארי המקיים את תכונת האיזון הבאה: < 1 BF(v) < 1-. כלומר, גורם האיזון הוא אחד מבין הערכים: 1+, 0, 1-. לדוגמא: נתון עץ,AVL כאשר לצד כל צומת כתוב גורם האיזון שלו. -1 12-1 8-1 15 0-1 6 10 0 11 0 14 +1 +1 13 +1 24 0 20 29 0 19 כשמוסיפים או מוציאים צומת מעץ,AVL אז לעיתים גורם האיזון מופר. למשל, אם נוסיף את 18 לעץ (הוא מתווסף כבנו השמאלי של 19), אז גורם האיזון של 20 הופך להיות 2+, וזה לא תקין. כאשר גורם האיזון הופך להיות 2+ או 2-, צריך לבצע גלגול על מנת שהעץ יחזור להיות עץ.AVL כל גלגול אורך זמן קבוע (1)Θ. 2

נגדיר ארבעה סוגי גלגולים:.LL, RR, LR, RL בכדי לדעת מתי יש לבצע כל גלגול, נשתמש בטבלה הבאה: בבן-השמאלי בבן-הימני v R סוג הגלגול המתאים v L בשורש v LL BF(v L ) = +1 BF(v) = +2 LR BF(v L ) = -1 BF(v) = +2 RR BF(v R ) = -1 BF(v) = -2 RL BF(v R ) = +1 BF(v) = -2 גלגול LL לפני שהכנסנו את v, גובה העץ היה 2+h. הוספת הצומת v גרמה להגדלת גובהו של A L ל- h+1. מהטבלה בעמ' הקודם אנו רואים שצריך לבצע גלגול,LL שיעביר את A לשורש. לאחר ביצוע הגלגול, העץ יראה כך: (גלגול RR סימטרי לגמרי ל- LL, ומתבצע באותו האופן). 3

גלגול LR הוכנס איבר ל- BL, שגרם לו להעלות את גובהו ל- h : לאחר ביצוע הגלגול, העץ יראה כך: (גלגול RL סימטרי לגמרי ל- LR, ומבצע באותו האופן) 4

דוגמאות: הוספת : 18 אחרי גלגול :LL הוספת : 11 אחרי גלגול :LR 5

ב) בזכות היותם מאוזנים, עצי AVL מאפשרים ביצוע חיפוש, הוצאה והכנסה בזמן.Θ(logn) הוספת 15: אחרי גלגול :RL :AVL וסרטוני אנימציה, שממחישים הוצאה/הכנסה/חיפוש בעץ,Java- יישומוני applet) http://www.cs.jhu.edu/~goodrich/dsa/trees/avltree.html http://www.site.uottawa.ca/~stan/csi2514/applets/avl/bt.html http://www.youtube.com/watch?v=ls_u6g-fsts 6

7

2. מסלולים קצרים בגרף הגדרה: בהינתן גרף לא-ממושקל, אורך של מסלול יוגדר בתור מספר הקשתות במסלול. המרחק בין v לבין u יוגדר בתור האורך הקטן ביותר של מסלול בין v ל- u. הגדרה: בהינתן גרף ממושקל, אורך של מסלול יוגדר בתור סכום המשקלים על הקשתות במסלול. המרחק בין ל- u. v יוגדר בתור האורך הקטן ביותר של מסלול בין u לבין v ישנן ארבע בעיות אלגוריתמיות שניתן להציג בהקשר של מסלולים קצרים ביותר בגרף:,s V G = (V,E) בעיה 1 (מקור יחיד יעדים רבים): בהינתן גרף וקודקוד המטרה היא למצוא את המרחקים הקצרים ביותר בין s לבין כל יתר קודקודי הגרף., t V המטרה היא למצוא בעיה 2 (מקור יחיד יעד יחיד): בהינתן גרף (V,E) G, = קודקוד s V וקודקוד את המרחק הקצר ביותר בין s לבין t., t V בעיה 3 (מקורות רבים יעד יחיד): בהינתן גרף (V,E) G = המרחקים הקצרים ביותר בין כל יתר קודקודי הגרף לבין t. וקודקוד המטרה היא למצוא את בעיה 4 (מקורות רבים יעדים רבים): בהינתן גרף (V,E) G, = המטרה היא למצוא את המרחקים הקצרים ביותר בין כל קודקוד בגרף לבין כל יתר קודקודי הגרף. אם קיים לנו אלגוריתם הפותר את בעיה 1 הוא פותר, על הדרך, גם את בעיה 2. אם קיים לנו אלגוריתם הפותר את בעיה 1 ניתן להשתמש בו לפתרון בעיה 3 (אם הגרף בלתי-מכוון, פשוט ניקח את t בתור קודקוד מקור; ואם הגרף מכוון נהפוך את כיווני כל הקשתות, ואז ניקח את t בתור קודקוד מקור). אם קיים לנו אלגוריתם הפותר את בעיה 1 ניתן להשתמש בו לפתרון בעיה 4 (נזמן את האלגוריתם עבור כל קודקוד וקודקוד). לכן בעיה 1 היא הבעיה היסודית בהקשר של מציאת מסלולים קצרים בגרף, ונפתח אלגוריתמים שונים הפותרים אותה. נוכל להשתמש באלגוריתמים האלה, תוך שינויים, כדי לפתור גם את בעיות 2,3 ו- 4. 8

3. חיפוש לרוחב תחילה Search) (Breadth-First בהינתן גרף (V,E) G = וקודקוד מסוים s המשמש כמקור,(source) חיפוש לרוחב בוחן בשיטתיות את הקשתות ב- G כדי לגלות כל קודקוד שניתן להגיע אליו מ- s. הוא מחשב את המרחק (מס' הקשתות המינימלי) מ- s לכל הקודקודים שניתן להגיע אליהם מ- s. האלגוריתם פועל על גרפים מכוונים ובלתי-מכוונים כאחד. חיפוש לרוחב מכונה כך מפני שהוא מקדם את הגבול בין קודקודים שהתגלו לקודקודים שטרם התגלו באופן אחיד לרוחב הגבול. כלומר, האלגוריתם מגלה את כל הקודקודים הנמצאים במרחק k מ- s לפני שהוא מגלה איזשהו קודקוד הנמצא במרחק 1+k מ- s. כדי לעקוב אחר התקדמותו, חיפוש לרוחב צובע את כל הקודקודים בלבן, באפור או בשחור. בתחילה, כל הקודקודים הם לבנים ועשויים להיצבע מאוחר יותר באפור ולאחר מכן בשחור. קודקוד מתגלה בפעם הראשונה שנתקלים בו במהלך החיפוש, וברגע זה הוא הופך להיות לא-לבן. קודקודים אפורים ושחורים הם קודקודים שהתגלו, אולם חיפוש לרוחב מבחין ביניהם כדי להבטיח שהחיפוש אכן יתקדם לרוחב.,u ( והקודקוד u הוא שחור, אזי הקודקוד v הוא אפור או שחור; כלומר, כל הקודקודים הסמוכים v) אם E לקודקודים שחורים כבר התגלו. לקודקוד אפור עשויים להיות כמה קודקודים סמוכים לבנים; קודקודים אפורים מייצגים את הגבול בין קודקודים שהתגלו לקודקודים שטרם התגלו. השגרה BFS שומרת עבור כל קודקוד u V את צבעו,(u.color) את המרחק מהמקור s ועד אליו u או אם u = s קודקוד קודם (למשל, אם אין אם ל- u.(u.previous) ואת הקודקוד הקודם אליו,(u.distance) לא התגלה), אזי.u.previous = NULL האלגוריתם משתמש בתור Q לניהול קבוצת הקודקודים האפורים. BFS(G,s) u 1 for each vertex V 2 do u.color WHITE 3 u.distance 4 u.previous NULL 5 s.distance 0 6 s.color GRAY 7 Q {s} 8 while Q 9 do u DEQUEUE(Q) 10 u.color BLACK 11 for each vertex v adjacent to u 12 do if v.color = WHITE 13 then v.color GRAY 14 v.distance u.distance + 1 15 v.previous u 16 ENQUEUE(Q,v) 9

חיפוש לרוחב בונה עץ רוחב המכיל בתחילה רק את השורש, שהוא קודקוד המקור s. בכל פעם שמתגלה קודקוד לבן v במהלך הסריקה של קודקוד שכבר התגלה, הקודקוד v והקשת (u,v) נוספים לעץ. אנו אומרים ש- u הוא הקודם predecessor) ל) -v, או האב (parent) של v בעץ הרוחב. לאחר ריצת האלגוריתם,BFS נוכל להדפיס את המסלול הקצר ביותר מ- s לקודקוד כלשהו v, על-די הפעלת האלגוריתם הרקורסיבי הבא: PRINT-PATH(G,s,v) 1 if v = s 2 then print s 3 else if v.previous = NULL 4 then print "no such path" 5 else PRINT-PATH(G,s,v.previous) 6 print v 10

ננתח את סיבוכיות האלגוריתם :BFS מכיוון שכל קודקוד נצבע בלבן אך ורק באתחול, הבדיקה בשורה 12 מבטיחה שכל קודקוד יוכנס לתור פעם אחת לכל היותר, ולכן גם יוצא ממנו פעם אחת לכל היותר. כל פעולת הכנסה לתור או הוצאה ממנו מתבצעת בזמן (1)Θ, ולכן הזמן הכולל המוקדש לפעולות על התור הוא.Θ( V ) גם האתחול מתבצע בזמן.Θ( V ) הזמן הכולל לסריקת הקשתות (שורה 11) הוא,Θ( E ) ובסה"כ נקבל כי זמן הריצה של השגרה BFS הוא.Θ( V + E ) סיבוכיות האלגוריתם הרקורסיבי היא שכן היא סורקת את המסלול מ- v ועד ל- s,,θ( V ) PRINT-PATH ומסלול זה עובר לכל היותר פעם אחת בכל קודקוד. 11

4. מיון מנייה (מיון ספירה Sort (Counting הוכחנו שכל אלגוריתם מיון המתבסס על השוואות, יתבצע בזמן שאינו מתבסס על השוואות? Ω(nlogn). אולם כיצד יראה אלגוריתם מיון נניח שאנחנו מקבלים כקלט מערך A בגודל n איברים, שכל אחד מהם לקוח מהתחום 1-k..0. כלומר, אנחנו מניחים כאן שהקלט מוגבל לתחום מסוים. מטרתנו היא להחזיר מערך B, בגודל n איברים, המכיל את איברי מערך הקלט A כשהם ממוינים. לשם כך, ניעזר במערך עזר בשם C שגודלו k איברים (נשים לב! גודלו של המערך C יכול להיות שונה מגודלם של A ו- B ). נפעיל את האלגוריתם הבא, הנקרא מיון מנייה (או מיון ספירה), המנצל את העובדה שאיברי הקלט לקוחים מתחום מוגבל, כדי למנות (לספור) כמה פעמים כל ערך אפשרי מופיע בקלט. COUNTING-SORT (A,B,n,k) 1 for i 0 to k-1 2 do C[i] 0 3 for j 0 to n-1 4 do C[A[j]] C[A[j]] + 1 5 for i 1 to k-1 6 do C[i] C[i] + C[i-1] 7 for j n-1 downto 0 8 do C[A[j]] C[A[j]] - 1 9 B[C[A[j]]] A[j] הסבר האלגוריתם בשורות 1-2 אנחנו מאתחלים את מערך המונים C. בשורות 3-4 אנחנו עוברים על כל איברי המערך המקורי A, ומגדילים ב- 1 את המונה המתאים. בסיום ביצוע לולאה זו, התא C[x] מכיל את כמות ההופעות של הערך x. בסיום ביצוע הלולאה בשורות 5-6, התא C[x] יכיל את כמות הערכים הקטנים-או-שווים ל- x. הלולאה בשורות 7-9 מציבה כל איבר במיקומו המתאים. לדוגמא, עבור מערך הקלט A הבא, כך יראה מערך המונים C בסוף שורה 4: אחרי ביצוע הלולאה בשורות 5-6, המערך C יראה כך: 12

אחרי ביצוע האיטרציה הראשונה של הלולאה האחרונה: אחרי ביצוע האיטרציה השנייה של הלולאה האחרונה: אחרי ביצוע האיטרציה השלישית של הלולאה האחרונה: ובתום ביצוע האלגוריתם: B מכיל את איברי הקלט A, כשהם בצורה ממוינת בסדר עולה. סיבוכיות זמן הריצה מבחינת סיבוכיות זמן הריצה, הלולאה הראשונה מבצעת k איטרציות, הלולאה השלישית מבצעת k-1 איטרציות, והלולאות השנייה והרביעית מבצעות n איטרציות. גוף כל אחת מהלולאה מתבצע בזמן קבוע, ולכן, בסך הכל, סיבוכיות זמן הריצה היא בגודלו של טווח הערכים האפשרי עבור ערכי הקלט. Θ(n+k), כלומר היא תלויה באופן לינארי הן בגודלו של הקלט והן אם טווח הערכים הוא קטן, האלגוריתם יהיה יעיל מאוד. לדוגמא, אם מתקיים הריצה של מיון מנייה תהיה Ο(n), k = אז סיבוכיות זמן Θ(n). נשים לב שזמן ריצה לינארי זו תוצאה יותר טובה מאשר החסם התחתון Ω(nlogn) במודל ההשוואות שהוכחנו קודם. אם כך, האם נפלה טעות בהוכחה שראינו קודם? לא, האלגוריתם למיון מנייה פשוט אינו מבוסס על השוואות, ולכן החסם התחתון שהוכחנו אינו תקף לגביו. סיבוכיות המקום בזיכרון עוד נציין שמבחינת סיבוכיות המקום בזיכרון complexity),(space יש להקצות מערך עזר שגודלו כגודלו של טווח הערכים האפשרי. זו עוד סיבה מדוע אנחנו מעוניינים שגודלו של הטווח יהיה קטן לא רק כדי שסיבוכיות זמן הריצה complexity) (run-time תהיה נמוכה, אלא גם כדי שלא ניאלץ להקצות מערך עזר מאוד גדול בזיכרון המחשב. 13

B, כשהסדר יציבות המיון נשים לב ששני איברים בעלי אותו הערך, שהופיעו במערך הקלט A, יופיעו שניהם במערך הפלט היחסי ביניהם נשמר. לדוגמא, המספר 3 מופיע כמה פעמים במערך הלא-ממוין שאנחנו מקבלים כקלט. במהלך ביצוע האלגוריתם, המופע הימני ביותר של 3 במערך הקלט, יהיה זה שיועתק למקום הימני ביותר (מבין כל המופעים של 3) במערך הפלט; המופע השני-הכי-ימני של 3 במערך הקלט, יהיה זה שיועתק למקום השני-הכי-ימני (מבין כל המופעים של 3) במערך הפלט, וכו'. על שיטת מיון שמקיימת תכונה זו, נאמר שהיא יציבה.(stable) יציבות של אלגוריתם מיון זו תכונה רצויה, ומסתבר שמיון מנייה זהו מיון יציב. 14