לפניכם המחלקה 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 java.util.LinkedList<Ring> data = new java.util.LinkedList<>();
public Pole() { }
public void add(Ring r) { data.addFirst(r); } // O(1) — מכניסה טבעת r לראש המוט
public Ring remove() { return data.removeFirst(); } // O(1) — מוציאה ומחזירה את טבעת הראש
public boolean isEmpty() { return data.isEmpty(); } // O(1)
public void sort() {
// TODO — סעיף א
}
}
סעיף א
ממש ב-Java את הפעולה sort() (ב-C#: Sort()) שבמחלקה Pole, המסדרת את הטבעות כך שהגדולות "מונחות" בתחתית המוט והקטנות מעליהן. בתשובתך השתמש רק בפעולות המחלקות Pole ו-Ring.
public void sort()
סעיף ב
מהי סיבוכיות זמן הריצה של הפעולה שמימשת בסעיף א? נמק את תשובתך.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.