שאלה קטנה בJAVA

הית יכול לעשות כך

private int HowMuchVal(int[] a, int val, int i, int c) { // מקבלת מערך, ערך לבדיקה, מקום i, כמות התחלתית לספירה // הפונקציה תחזיר כמה פעמים ערך הופיע בתוך המערך if (i < a.Length ) { if (a == val) return (HowMuchVal(a, val, i + 1, c + 1)); else return (HowMuchVal(a, val, i + 1, c)); } else { return (c); // החזרת הכמות שנספרה } } public int CheckGoodArray(int[] a, int[] b, int i) { // מקבלת מערך a, מערך b, מקום i // בודקת שוויון ערכים וחזרות בין ערכי מערך a,b if (i < a.Length) { if (HowMuchVal(a, a, 0, 0) == HowMuchVal(b, a, 0, 0)) // בדיקת שוויון ערכים return (CheckGoodArray(a, b, i + 1)); // המשך בדיקה לערך הבא else return (0); // אין שוויון, הפסק בדיקה } else { return (1); // בדיקת המערך הסתימה, הכל תקין } }

לא הרצתי את זה, אבל אני כמעט בטוח שזה עובד (אגב הקוד הוא בC# אבל זה נראה לי ממש אותו דבר כמו JAVA)
 

shayke 0 0 7

New member
הבנתי, אתה פשוט סופר את מספר המופעים של איבר

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

בעלת סיבוכיות "קלילה" יותר.. פשוט הצגתי לך דרך של חשיבה נכונה.|סדגש יצירת פונקציה שמקבלת מערך וערך ומציגה כמה פעמים הופיע האיבר. הפונקציה ה2 משתמשת בראשונה לשם השוואה. כך הרבה יותר קל (ויעיל) לעבור על 2 המערכים, ולבדוק אותם בלי להסתבך. ברגע שחל אי-שוויון, הפונקציה תיספק באותו רגע, ותחזיר אפס (לחילופין היה ניתן להחזיר TRUE\FALSE..לי יותר נכון להחזיר 0\1).|
 

shayke 0 0 7

New member
יותר קל כן, אבל לא יותר יעיל אחי-הסברתי למה:

סיבוכיות זמן הריצה של האלגוריתם שלך הוא פי 2 לפחות משל האלגוריתם שלי, אך למרות זאת הסיבוכיות O היא אותה סיבוכיות.
 
נכון. אבל שלך לא עונה ב100% על השאלה.

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

shayke 0 0 7

New member
אם הכוונה שלך לגרסה עם הFOUND, אז אתה

צודק. אבל הגרסה שהצגתי בהתחלה(+וידוא פשוט ש2 המערכים באותו אורך) זה פתרון מעולה בחצי מזמן הריצה מהפתרון שהצגת.
 

shayke 0 0 7

New member
השאלה המקורית שלי שעבורה פתחתי שרשור היתה

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

יויו71

New member
מה אתם רוצים ???

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

shayke 0 0 7

New member
מדהים איך אתה מקשר בין הנסיון האישי שלך

לבין טיעונים לגבי אופי מתן הנקודות בשאלה, וכמובן, כמו בור מתלהם, אתה טועה ומטעה. אני לא אשאל אותך למה הורידו לי 20 נקודות על אלגוריתם שדורש שינוי פשוט(פרמטר) ולא מהותי כדי שיתפקד, פשוט, כי אתה לא יודע!! אני לא אבקש ממך להתייחס באופן ענייני לכתוב, פשוט, כי אתה לא מבין. אני פשוט אגש למבחן נוסף לשיפור ציון וזהו, בתקווה שעד אז אני אדע למה קיבלתי רק 10 נקודות אם הוכחתי שהבודק שהוריד לי כ"כ הרבה נקודות מלכתחילה טעה. אגב, לאחר שתוציא בעדינות ובזהירות את הלשון שלך מהישבן שלה, עדיף שתקרא על הנסיון של אחרים איתה, ואל תבלבל את המוח יותר.
 

יויו71

New member
תענוג לקרוא את דבריך.

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