אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2023 · אביב מועד ב · שאלה 8כל שאלות המבחן ←
תכנות בסיסימערכים חד-ממדיים

שתי פעולות המקבלות מערך מספרים שלמים ומשנות אותו 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;
        }
    }
}
  1. נתון מערך int[] arr={123, 45, -15, 15, -8}. עקבו בעזרת טבלת המעקב אחרי זימון הפעולה what(arr) ורשמו מה יהיה תוכן המערך arr לאחר זימון הפעולה.
  2. תנו דוגמה למערך brr בגודל של חמישה תאים, כך שהתוכן של המערך לא ישתנה אחרי ביצוע הפעולה.
  3. מה מבצעת הפעולה 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];
}
  1. נתון מערך int[] arr={-12, 55, 0, -46, 67}. מה יהיה תוכן המערך אחרי זימון הפעולה why(arr)?
  2. מה מבצעת הפעולה why באופן כללי?
  3. האם קיים מערך crr בגודל של חמישה תאים, שעבורו שני הזימונים what(crr) ו-why(crr) יביאו לאותן תוצאות? אם כן – תנו דוגמה של המערך crr, אם לא – הסבירו למה.
סעיף ג

מה הן סיבוכיות זמן הריצה של הפעולות what ו-why?

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי