shayke 0 0 7
New member
שאלה קטנה בJAVA
שאלה שהיתה לי במבחן לפני כמה חדשים ומעלה בי תהיות.. נתונים 2 מערכים לא ממויינים. עליך לבדוק אם יש פרמוטציה, ז"א כל ערך במערך קיים-לא משנה באיזה סדר- במערך השני. הפתרון צריך להיות רקורסיבי, ובלי למיין. מותר לשנות סדר במערך, סבוכיות זמן ריצה\מקום לא חשובים. הפתרון שלי מחולק ל3 שיטות: שיטה ראשונה מחפשת ערך במערך, אם נמצא אז הוא יוחלף עם ערך מאינדקס נתון(הוא רץ בשיטה השניה מתחילת המערך, היתרון בכך הוא להבטיח שלא יימצא ערך יותר מפעם אחת ע"י חלוקה בתוך המערך הנבדק של "נבדקו ולא נבדקו") שיטה שניה היא שקוראת לשיטה הראשונה ורצה על המערך השני, היא פשוט שולחת לשיטה הראשונה ערכים מהמערך השני, ואת המערך הראשון כפרמטרים. זו שיטה שדורסת את ה- שיטה שלישית היא סתם שיטה שקוראת לשיטה השניה עם פרמטרים התחלתיים. מה דעתכם על הקוד הבא?(אני מקווה שיצא כמו במקור- עם הזחות וצבעוני..נו..) אני מניח שאפשר היה לרשום קוד יותר קצר בשימוש עם מערך עזר, מה דעתכם על הקוד הבא:
אם ישנן שאלות, אשמח לענות.
שאלה שהיתה לי במבחן לפני כמה חדשים ומעלה בי תהיות.. נתונים 2 מערכים לא ממויינים. עליך לבדוק אם יש פרמוטציה, ז"א כל ערך במערך קיים-לא משנה באיזה סדר- במערך השני. הפתרון צריך להיות רקורסיבי, ובלי למיין. מותר לשנות סדר במערך, סבוכיות זמן ריצה\מקום לא חשובים. הפתרון שלי מחולק ל3 שיטות: שיטה ראשונה מחפשת ערך במערך, אם נמצא אז הוא יוחלף עם ערך מאינדקס נתון(הוא רץ בשיטה השניה מתחילת המערך, היתרון בכך הוא להבטיח שלא יימצא ערך יותר מפעם אחת ע"י חלוקה בתוך המערך הנבדק של "נבדקו ולא נבדקו") שיטה שניה היא שקוראת לשיטה הראשונה ורצה על המערך השני, היא פשוט שולחת לשיטה הראשונה ערכים מהמערך השני, ואת המערך הראשון כפרמטרים. זו שיטה שדורסת את ה- שיטה שלישית היא סתם שיטה שקוראת לשיטה השניה עם פרמטרים התחלתיים. מה דעתכם על הקוד הבא?(אני מקווה שיצא כמו במקור- עם הזחות וצבעוני..נו..) אני מניח שאפשר היה לרשום קוד יותר קצר בשימוש עם מערך עזר, מה דעתכם על הקוד הבא:
public static boolean isExist(int[] a, int val, int i, int place, boolean found) { if(i==a.length) return false; if(val==a) { int tmp=a; a=a[place]; a[place]=tmp; return true; } else return isExist(a, val, i+1, place, found); } public static boolean isM(int[] a, int[] b, int i) { if(i==b.length) return true; if(!isExist(a, b, i, i, false)) return false; return isM(a, b, i+1); }
אם ישנן שאלות, אשמח לענות.