פורסם 2013 בנובמבר 2712 שנים שלום!אני שובר את הראש על התרגיל הבא ולא מוצא אלגוריתם מספיק יעיל בשבילו. הבעיה היא כזאתכתוב תוכנית הקולטת סידרה לא מוגבלת של מספרים המסתיימת במספר0 ומדפיסה את השניים הקטנים ביותר החיוביים (ניתן להניח כי יש כאלו) .למשל עבור הסדרה: 8 3 -3 -8 18 2 7 -1 יודפסו המספרים 2 ו-3.למצוא את המספר הקטן ביותר, עשיתי קלי קלות ולא הייתה בעיה. העניין הוא איך אני מוצא את המספר השני הקטן ביותר?חשבתי לכיוון מערכים אבל מכיוון שגודל הסידרה אינו מוגדר מראש אין לי אפשרות לשמור אותה בתוך מערך ולמיין.כיוון נוסף שחשבתי הוא לשמור מערך קטן של 2-3 מספרים בכל פעם למיין אותו ולשמור בעוד 2 משתני עזר. העניין הוא שזה דורש המון בדיקות תנאי מה שיוצר תוכנית לא יעילה במיוחד.עוד כיוון שניסיתי לחשוב זה, אני יודע כמה מספרים חיובים יש, אני יכול לחשב את הסכום שלהם \ מכפלה שלהם וואט אבר אבל לא הצלחתי לחשוב לכיוון של איזה נוסחה כזאת או אחרת למציאת האברים הקטנים ביותר.אשמח לשמוע מה ההצעות שלכם לאלגוריתם יעיל למקרה הנ"ל.
פורסם 2013 בנובמבר 2712 שנים זה לא נשמע מי יודע מה יותר קשה מלמצוא את הקטן ביותר.פשוט צריך לגרור איתך כל פעם שני מספרים, במקום אחד, ולבצע יותר השוואות.
פורסם 2013 בנובמבר 2712 שנים כל מספר שהופך להיות "המלך החדש" (המספר הקטן ביותר) נשמר כמובן במשתנה min נכון? ככה מצאת את המספר הקטן ביותר.ומיהו הערך שנמצא ב-min לפני שדרסת אותו?
פורסם 2013 בנובמבר 2712 שנים כמו שאמרו מעלי, קח את 2 הראשונים ותגיד שהם הכי קטנים שתעשה סדר הכי קטן ואחד לפני..תרוץ ותבדוק מול המקום השני אם הוא גדול יותר אם לא תמשיך לבא.אם הוא קטן יותר תבדוק מול הכי קטן האם הוא קטן ממנו תשים את המספר החדש בתור הכי קטן ואת הכי קטן שהיה למספר שתיים הכי קטן אם לא פשוט תחליף את המקום השני.כמובן שתבדוק אם הוא מספר תקין (לא 0 או שלילי לפני כל השוואות..)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.