PriorityQueue: Dequeue Operation (সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্ট সরানো)
Dequeue মানে প্রায়োরিটি কিউর থেকে সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্টটি সরিয়ে ফেলা এবং তার ডেটা রিটার্ন করা। আমাদের সর্টেড অ্যারে ইমপ্লিমেন্টেশনে এটি অ্যারের শেষে থাকে, তাই pop() দিয়ে O(1)-এ করা যায়।
Dequeue মেথড ইমপ্লিমেন্টেশন
class PriorityQueue {
constructor(maxSize = 10) {
this.maxSize = maxSize;
this.container = [];
}
isEmpty() {
return this.container.length === 0;
}
// Dequeue Implementation
dequeue() {
if (this.isEmpty()) {
console.log("Queue Underflow! কিউ খালি।");
return undefined;
}
// সর্বোচ্চ প্রায়োরিটি = শেষ এলিমেন্ট -> pop()
return this.container.pop().data;
}
// ... enqueue, peek, clear, display ...
}
টেস্টিং উদাহরণ
const pq = new PriorityQueue(5);
pq.enqueue("Hello", 3);
pq.enqueue("World", 2);
pq.enqueue("Foo", 8);
console.log("Before dequeue:");
pq.display();
// [ { data: 'World', priority: 2 },
// { data: 'Hello', priority: 3 },
// { data: 'Foo', priority: 8 } ]
const removed = pq.dequeue();
console.log("Dequeued:", removed); // "Foo" (Priority 8 - Highest)
console.log("After dequeue:");
pq.display();
// [ { data: 'World', priority: 2 },
// { data: 'Hello', priority: 3 } ]
আউটপুট ব্যাখ্যা
Before dequeue:
[ { data: 'World', priority: 2 }, { data: 'Hello', priority: 3 }, { data: 'Foo', priority: 8 } ]
Dequeued: Foo
After dequeue:
[ { data: 'World', priority: 2 }, { data: 'Hello', priority: 3 } ]
"Foo" (Priority 8) সর্বোচ্চ প্রায়োরিটি, তাই প্রথমে বের হয়েছে।
Priority Queue Dequeue Logic
INSERTION ORDER (Enqueue): PRIORITY ORDER (Internal Storage): "Hello" (3) "World" (2) ← Lowest "World" (2) "Hello" (3) "Foo" (8) "Foo" (8) ← Highest (Tail) DEQUEUE() -> pop() -> "Foo" (8) REMOVED
Time Complexity Comparison
| Implementation | Enqueue | Dequeue | Peek |
|---|---|---|---|
| Sorted Array (Current) | O(n) | O(1) | O(1) |
| Unsorted Array | O(1) | O(n) — Linear Search | O(n) |
| Binary Heap (Optimal) | O(log n) | O(log n) | O(1) |
নোট: বড় স্কেলে (১০,০০০+ এলিমেন্ট) Binary Heap ব্যবহার করুন। npm: priorityqueue, heap।