טוב, רעיון ראשון...
ברוטאלי קצת: נגיד שה-RAM הוא בגודל M, והמערך הוא בגודל N. נבצע את המיון בצורה איטרטיבית, כאשר בכל איטרציה נטפל בעוד M איברים, בצורה כזו: 1. עבור I=1..M איברים בצע 1.1. מצא את האיבר הקטן ביותר במערך שנשאר לא ממוין. 1.2. שמור את האיבר הנ"ל בזכרון ה-RAM. 1.3. דרוס את האיבר הקטן ביותר עם האיבר ה-I במערך שנשאר 2. העתק את האיברים מה-RAM לתחילת המערך הלא ממוין יש לחזור על הפעולה עד לסיום המיון. סה"כ כתיבות - 2*N. נראה לי שהאלגוריתם לא היה ברור כל כך, ולכן אדגים. נגיד שהמערך הוא בגודל 7, וה-RAM בגודל 3. המערך יהיה:
19,2,7,14,12,1,3
מוצאים את האיבר הכי קטן (1), שמים אותו ב-RAM, ודורסים אותו עם האיבר הראשון במערך, כך:
19,2,7,14,12,19,3
ממשיכים גם עם 2 (שבו במקרה אין דריסה - הרווחנו כתיבה במקרה) ועם 3, לקבלת התוצאה הזו:
19,2,7,14,12,19,7
עכשיו דורסים את שלושת האיברים הראשונים עם תוצאת המיון:
1,2,3,14,12,19,7
אחרי הסיבוב השני ולפני ההעתקה מה-RAM זה יהיה:
1,2,3,14,12,19,19
יש לשים לב שהחיפוש במערך אחרי האיבר הכי קטן לא עובר על כל המערך, אלא אך ורק על השטח שלא ממוין, וגם בתוכו - לא על המספרים ש-"הוקפצו" קדימה. הדוגמה הזו היא קריטית בסיבוב הזה, אחרת נמצא את 14 פעמיים. ואז הכתיבה:
1,2,3,7,12,14,19
עכשיו "ממיינים" את האיבר האחרון - וזהו, סיימנו. השאלה היא אם אפשר למצוא משהו שיעבוד ב-K*N כתיבות, כאשר K קטן מ-2.