נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
מדעי המחשב
RSS UnderWarrior Forums : RSS מדעי המחשב
נושא

נושא: איזו פעולה רקורסיבית יעילה יותר?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
דרור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 31 October 2008 בשעה 12:53 | IP רשוּם
ציטוט דרור

שלום, תוכלו להסביר לי איזו מבין 3 הפעולות הרקורסיביות הבאות למציאת איבר מקסימלי במערך יעילה יותר?

*הנחה: גודל המערך גדול מ-1
*בפעולה הקולטת פרמטר של איבר אחרון במערך, יש להניח שהוא תמיד יהיה:
קוד:
arr.Length - 1


פעולה ראשונה:
קוד:
public static int FindMax(int[] arr, int start, int end)
{
    if (start == end) return arr[start];
    else
    {
        int middle = (start + end) / 2;
        int max1 = FindMax(arr, start, middle);
        int max2 = FindMax(arr, middle+1, end);
        if (max1 > max2) return max1;
        return max2;
    }
}


פעולה שניה:
קוד:
public static int FindMax(int[] arr, int start)
{
    if (start == arr.Length - 1)
        return arr[start];
    else
    {
        int temp = FindMax(arr, start + 1);
        if (arr[start] > temp)
            return arr[start];
        return temp;
    }
}


פעולה שלישית:
קוד:
public static int FindMax(int[] arr, int start)
{
    if (start == arr.Length -1)
        return Math.Max(arr[arr.Length -1], arr[arr.Length -2]);
    int max = Math.Max(arr[start], arr[start++]);
    return Math.Max(max, FindMax(arr, start++));
}


חזרה לתחילת העמוד הצג את כרטיס החבר של דרור חפש הודעות אחרות של דרור בקר בדף הבית של דרור
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 04 November 2008 בשעה 12:30 | IP רשוּם
ציטוט אורח

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

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 04 November 2008 בשעה 21:54 | IP רשוּם
ציטוט shoshan

אורח כתב:
נראה שהפעולה הראשונה משתמשת בחיפוש בינארי והשניה בחיפוש לינארי ולכן אם אני זוכר נכון מבחינת יעילות הפעולה הראשונה יעילה יותר.


בכלל לא נכון.

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


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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