27-11-2005, 20:27
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
בוא נלך עם ההגיון שלך...
בנית תוכנה שקולטת את המספרים למערך.
עד כאן הכל בסדר.
עכשיו מטרתך היא למיין את המערך, ברגע שהוא יהיה ממויין, מן הסתם ארבעת האיברים
הראשונים יהיו הקטנים ביותר (או האחרונים - לפי כיוון המיון שזה לא משנה כל כך).
דרך קלה יותר, היא למיין את המערך תוך כדי קליטת המספרים, כך שבסיום קליטתם, כבר יהיה לך
מערך ממויין.
אני אדגים לך אלגוריתם קטן (לא מבטיח שהוא יעיל...אבל הוא ממיין תוך כדי קליטה):
נתון: מערך (נניח שהוא מסוגל לגדול דינמית, אני לא אתחיל להתעסק בזה עכשיו), אינדקס = 0.
1. קלוט מספר (x) למיקום אינדקס (y) ובצע לולאה זו כל עוד x שונה מ1-:
1.2. אם y שונה מ-0 לולאה:
1.2.1. בדוק האם הערך במיקום (y-1) גדול מ-x
1.2.2. אם כן, החלף בין הערכים במיקומים אלו (value(y-1) <-> value(y, ובצע y--
1.2.3. אם לא, צא מהלולאה.
1.3. אינדקס++
|