שתי פעולות המקבלות מערך מספרים שלמים ומשנות אותו in-place: what (ראו קוד) ו-why (ראו קוד).
שתי פעולות המקבלות מערך מספרים שלמים ומשנות אותו in-place: what (ראו קוד) ו-why (ראו קוד).
סעיף א
נתונה הפעולה what המקבלת מערך מספרים שלמים:
public static void what(int[] arr){
int i = 0;
int j = arr.length - 1;
int temp;
while (i < j)
{
if (arr[i] <= 0)
i++;
else if (arr[j] >0)
j--;
else
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
- נתון מערך int[] arr={123, 45, -15, 15, -8}. עקבו בעזרת טבלת המעקב אחרי זימון הפעולה what(arr) ורשמו מה יהיה תוכן המערך arr לאחר זימון הפעולה.
- תנו דוגמה למערך brr בגודל של חמישה תאים, כך שהתוכן של המערך לא ישתנה אחרי ביצוע הפעולה.
- מה מבצעת הפעולה what באופן כללי?
סעיף ב
נתונה הפעולה why המקבלת מערך של מספרים שלמים:
public static void why(int[] arr){
int[] newArr = new int[arr.length];
int ind = 0;
for (int i = 0; i < arr.length; i++)
if (arr[i] <= 0)
newArr [ind++] = arr[i];
for (int i = 0; i < arr.length; i++)
if (arr[i] > 0)
newArr [ind++] = arr[i];
for (int i = 0; i < arr.length; i++)
arr[i] = newArr [i];
}
- נתון מערך int[] arr={-12, 55, 0, -46, 67}. מה יהיה תוכן המערך אחרי זימון הפעולה why(arr)?
- מה מבצעת הפעולה why באופן כללי?
- האם קיים מערך crr בגודל של חמישה תאים, שעבורו שני הזימונים what(crr) ו-why(crr) יביאו לאותן תוצאות? אם כן – תנו דוגמה של המערך crr, אם לא – הסבירו למה.
סעיף ג
מה הן סיבוכיות זמן הריצה של הפעולות what ו-why?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.