מתכנתים שעוברים מפיתוח PC ואינטרנט לקידוד עבור מכשירים ניידים או מערכות משובצות מגלים שיותר זמן מושקע בבחירה ובקידוד של מבני הנתונים והאלגוריתמים שלהם. עם פחות זיכרון ואחסון נתונים מוגבל, אין מקום לספריות או מסגרות מובנות מראש. אז למי שצריך לכתוב את שגרת המיון שלו, הנה כמה שיקולים לגבי בחירת מיון הבועות הנמוך.
רקע כללי
מיון הבועות הוא אלגוריתם פשוט הממיין רשימה של פריטים בזיכרון. בהינתן מערך, הקוד משווה שוב ושוב כל זוג של פריטים סמוכים ומחליף אותם אם הם לא תקינים. התהליך חוזר על עצמו עד שלא מתרחשות עוד החלפות. אם ניתן היה לראות את המערך בזמן שהמיון מתבצע, הערכים הנמוכים היו "בועלים" לראש ואילו הערכים הגדולים היו שוקעים למטה. הנה הקוד הרלוונטי ב-Visual Basic 2010:
סרטון היום
בעוד החלפה = החלפה אמיתית = שקר עבור i = 0 ל-tbl.length - 2 אם tbl (i) > tbl (i + 1) אז tmp = tbl (i) tbl (i) = tbl (i + 1) tbl (i) + 1) = tmp swap = True End If Next End While
מתי לבחור את מיון הבועות
לאלגוריתם זה מספר יתרונות. זה פשוט לכתיבה, קל להבנה וזה דורש רק כמה שורות קוד. הנתונים ממוינים במקומם כך שיש מעט זיכרון תקורה, ולאחר מיון הנתונים נמצאים בזיכרון, מוכנים לעיבוד. החיסרון העיקרי הוא משך הזמן שלוקח למיון. הזמן הממוצע גדל כמעט אקספוננציאלית ככל שמספר רכיבי הטבלה עולה. פי עשרה ממספר הפריטים לוקח כמעט פי מאה זמן מיון.
מיון מערך אחר
אלגוריתמי המיון משתנים במורכבות, מהירות ותקורה. מיון הבועות הוא הפחות מורכב אך גם אחד האיטיים ביותר. מיונים אחרים המבוססים על מערך כמו מיון ההוספה ומיון החלפה הם קצת יותר מהירים אך דורשים יותר קוד (ראה את ההפניות למטה). היתרון העיקרי של מיונים מבוססי מערך הוא שהם משתמשים במינימום קוד ולוקחים את הכמות הקטנה ביותר של זיכרון עבודה. שקול את המינים האלה עבור מערכים פשוטים עם פחות מכמה מאות פריטים.
אלגוריתמי מיון מורכבים
מערכי נתונים גדולים יותר דורשים קוד מורכב יותר ויותר זיכרון. המיון המהיר והמיון הערימה מפצלים ומעתיקים את מערכי הנתונים כדי לייעל את מספר ההשוואות. המיון המהיר מחלק ללא הרף את הרשימה ואז מרכיב אותה מחדש בסדר ממוין. מיון הערימה מעתיק את הנתונים למבנה עץ ואז חוצה את העץ כדי להעתיק את הנתונים בחזרה לסדר. שניהם מהירים ויעילים אך דורשים יותר קוד והרבה יותר אחסון עובד. בחר אלגוריתמים אלה עבור מערכי נתונים גדולים.