עבור לתוכן

מציאת 2 מספרים הקטנים ביותר בסדרה באורך לא מוגדר

Featured Replies

פורסם

שלום!

אני שובר את הראש על התרגיל הבא ולא מוצא אלגוריתם מספיק יעיל בשבילו. הבעיה היא כזאת

כתוב תוכנית הקולטת סידרה לא מוגבלת של מספרים המסתיימת במספר0 ומדפיסה את השניים הקטנים ביותר החיוביים (ניתן להניח כי יש כאלו) .

למשל עבור הסדרה: 8 3 -3 -8 18 2 7 -1 יודפסו המספרים 2 ו-3.

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

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

כיוון נוסף שחשבתי הוא לשמור מערך קטן של 2-3 מספרים בכל פעם למיין אותו ולשמור בעוד 2 משתני עזר. העניין הוא שזה דורש המון בדיקות תנאי מה שיוצר תוכנית לא יעילה במיוחד.

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

אשמח לשמוע מה ההצעות שלכם לאלגוריתם יעיל למקרה הנ"ל.

פורסם

זה לא נשמע מי יודע מה יותר קשה מלמצוא את הקטן ביותר.

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

פורסם

כל מספר שהופך להיות "המלך החדש" (המספר הקטן ביותר) נשמר כמובן במשתנה min נכון? ככה מצאת את המספר הקטן ביותר.

ומיהו הערך שנמצא ב-min לפני שדרסת אותו?

פורסם

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

תרוץ ותבדוק מול המקום השני אם הוא גדול יותר אם לא תמשיך לבא.

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

כמובן שתבדוק אם הוא מספר תקין (לא 0 או שלילי לפני כל השוואות..)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים