לפניכם המחלקה Ring (טבעת) בעלת גודל ("S"/"M"/"L") וצבע, והמחלקה Pole (מוט) המספקת פעולות add (הכנסה לראש המוט, O(1)), remove (הוצאה מהראש, O(1)), isEmpty (O(1)) ו-sort (למימוש). לאחר sort(), הטבעות הגדולות צריכות להיות מונחות בתחתית המוט והקטנות מעליהן.
לפניכם המחלקה Ring (טבעת) בעלת גודל ("S"/"M"/"L") וצבע, והמחלקה Pole (מוט) המספקת פעולות add (הכנסה לראש המוט, O(1)), remove (הוצאה מהראש, O(1)), isEmpty (O(1)) ו-sort (למימוש). לאחר sort(), הטבעות הגדולות צריכות להיות מונחות בתחתית המוט והקטנות מעליהן.
public class Ring {
private string size; // גודל הטבעת ("S"/"M"/"L")
private int color; // צבע הטבעת
public Ring() { this.size = "L"; this.color = 0; }
public Ring(string str, int c) { this.size = str; this.color = c; }
public string GetSize() { return this.size; }
public int GetColor() { return this.color; }
}
public class Pole {
private System.Collections.Generic.LinkedList<Ring> data = new System.Collections.Generic.LinkedList<Ring>();
public Pole() { }
public void Add(Ring r) { data.AddFirst(r); } // O(1) — מכניסה טבעת r לראש המוט
public Ring Remove() { var r = data.First.Value; data.RemoveFirst(); return r; } // O(1)
public bool IsEmpty() { return data.Count == 0; } // O(1)
public void Sort() {
// TODO — סעיף א
}
}
סעיף א
ממש ב-Java את הפעולה sort() (ב-C#: Sort()) שבמחלקה Pole, המסדרת את הטבעות כך שהגדולות "מונחות" בתחתית המוט והקטנות מעליהן. בתשובתך השתמש רק בפעולות המחלקות Pole ו-Ring.
public void Sort()
סעיף ב
מהי סיבוכיות זמן הריצה של הפעולה שמימשת בסעיף א? נמק את תשובתך.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.