הצעה
אני לא בטוח אם זה נכון במובן של יעילות (לפי איך שמבקשים) או אם זה נכון באופן 100 אחוז אבל חשבתי על משהו: קודם כל תמיין את המערך,(במקום ה 0 הכי קטן ,במקום האחרון המקסימלי), עכשיו שמור פלג מסוים שמאותחל ל- 0 כמו כן תזדקק ל3 אינדקסים : אחד בהתחלה Aהשני במקום האחרוןB והשלישי לפניC אחרון,תתחיל בלולאה מהסוף שבודקת האם במקום ה A פלוס במקום הC של המערך שווה למקום ה B , אם לא בדוק האם במקום ה A פלוס במקום ה C קטן מ B, אם כן תן לפלג שלך 1 וזה יסמן שצריך להתחיל איטרציה חדשה שבה B מוזז מקום אחד אחרוה וכן גם C כמו כן חייבים גם לקדם את את A ולעשות שוב ושוב את מה שכתבתי מקודם(שוב B וC יהיו בעמדות שהיו כמו בהתחלה....) הערה: כמו שאתה רואה, זה לא ממש יעיל אבל זה די טוב

אתה יכול ליעל אם תשתמש באלגו שהצעתי ורק תוסיף עוד בדיקות של מקרים מסויימים שאמצעותם ניתן למנוע מעבר מיותר.............