מבוא לאלגוריתם מיון ההכנסה

מבוא לאלגוריתם מיון ההכנסה

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





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





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





מבט מקרוב על הכנסת מיון

ייתכן שהתיאור למעלה לא היה הגיוני בעיניך. דוגמה אמורה לעזור לך להבין הרבה יותר טוב.

נניח שיש לך רשימה: [39, 6, 2, 51, 30, 42, 7].



האלגוריתם מזהה 39 כערך הראשון של רשימת המשנה הממוינת. ההערכה עוברת למיקום השני.

קשור: תכנות דינמי: דוגמאות, בעיות נפוצות ופתרונות





6 מושווה אז ל 39. מאחר ש 6 הוא פחות מ 39, 6 מוכנס בעמדה הראשונה ו 39 בשני. סדר הרשימות החדש הוא לאחר המעבר הראשון הוא כעת:

[6, 39, 2, 51, 30, 42, 7]





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

[2, 6, 39, 51, 30, 42, 7]

עבור המעבר השלישי, סדר הרשימה הוא:

[2, 6, 39, 51, 30, 42, 7]

התהליך חוזר עד מיון הרשימה כולה.

עיין בתרשים שלהלן המסכם פעולות אלה:

ניתוח אלגוריתמים

מורכבות הזמן של מיון הכנסה היא O (n2), בדיוק כמו מיון בועות . מספר ההשוואות בתרחיש הגרוע ביותר הוא סכום כל המספרים השלמים מ -1 עד (n-1), ונותן סכום ריבועי.

יישום קוד

קוד Python ו- Java להלן מראה כיצד תוכל ליישם את שיטת מיון ההוספה.

פִּיתוֹן:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Java:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

קידוד טוב יותר עם פסאודוקוד

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל מהו Pseudocode וכיצד הוא הופך אותך למפתח טוב יותר?

מתקשים ללמוד תכנות? השתלט על קוד על ידי למידת פסאודוקוד. אבל מהו פסאודוקוד והאם זה באמת יכול לעזור?

קרא הבא
נושאים קשורים
  • תִכנוּת
  • ג'אווה
  • פִּיתוֹן
  • הדרכות קידוד
על הסופר ג'רום דוידסון(22 מאמרים פורסמו)

ג'רום הוא כותב צוות ב- MakeUseOf. הוא מכסה מאמרים בנושא תכנות ולינוקס. הוא גם חובב קריפטו ותמיד עוקב אחרי תעשיית הקריפטו.

ספרים אלקטרוניים להורדה ולקריאה בחינם
עוד מאת ג'רום דוידסון

הירשם לניוזלטר שלנו

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

לחצו כאן להרשמה