נשלח בתאריך: 31 October 2008 בשעה 12:53 | | IP רשוּם
|
|
|
|
שלום, תוכלו להסביר לי איזו מבין 3 הפעולות הרקורסיביות הבאות למציאת איבר מקסימלי במערך יעילה יותר? *הנחה: גודל המערך גדול מ-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++)); }
|
|
|
|