מיון באמצעות Flip

Kurayami

New member
מיון באמצעות Flip

בהינתן סדרה המהווה פרמוטציה של המספרים מ1 עד n ומספר טבעי k<n, פעולת Flip על הסדרה הופכת את הסדר של k הערכים השמאליים של הסדרה. לדוג': flip(4) של הסדרה: 123456789 תתן 432156789 הוכיחו שכל תמורה מאורך n ניתן להעביר לסדר ממויין באמצעות 2n-2 פעולות Flip
 

mazory

New member
נסה באינדוקציה

נסה לבצע אינדוקציה על אורך הרישא הממוינת. בסיס - בצעד אחד ניתן להעביר את המספר הקטן ("1") לראש לתמורה. צעד - בהנחה שיש לי רישא ממויינת באורך K - תראה כיצד אתה הופך אותך ע"י שימוש ב-FLIP -ים לרישא באורך K+1
 

Kurayami

New member
פתרון למי שמתעניין:

מוצאים את המס' הi-י במערך(פשוט רצים עד שמוצאים אותו בהנתן n), נגיד שהוא נמצא במקום הk מבצעים flip(k) ddd לאחר פעולה זו הוא יהיה במקום הראשון כעת נבצע Flip(i) והוא יעבור למיקום הסופי שלו i. כאשר i רק מn עד 2. סך הכל נדרשות פה n-1 איטרציות, בכל איטרציה 2 פעולות flip לכן בסך הכל 2n-2 פעולות flip. נשים לב שלאחר n-1 איטרציות המס' 2..n ממויינים במקומם הנכון לכן גם הספרה 1 נמצאת בהכרח במקום הראשון.
 
למעלה