Resizing the Queue (Kuyruğun Yeniden Boyutlandırılması)
Resizing the Queue (Kuyruğun Yeniden Boyutlandırılması), bir kuyruk veri yapısının kapasitesinin dinamik olarak değiştirilmesi işlemidir. Bu, bir kuyruğun içeriğinin yeterince büyük veya küçük olmaması durumunda, kuyruğun verimli bir şekilde çalışmasını sağlamak için gereklidir.
Neden Gerekli?
Performans İyileştirmesi: Kapasitesi dolmuş bir kuyruğa yeni öğeler eklemek istediğinizde, yeni bir kapasiteyle kuyruğu yeniden boyutlandırmak gerekir.
Alan Kullanımı: Eğer kuyruğunuz çok büyük bir kapasiteye sahip ancak yalnızca küçük bir bölümü kullanılıyorsa, daha küçük bir kapasiteye yeniden boyutlandırmak, kullanılmayan alanı serbest bırakabilir.
Nasıl Çalışır?
Yeniden boyutlandırma işlemi, genellikle kuyruk dolu olduğunda veya belirli bir kullanım oranının altına düştüğünde gerçekleşir. Bu, yeni bir dizi oluşturmayı, eski dizi içeriğini yeni diziye kopyalamayı ve eski diziyi yeni diziyle değiştirmeyi içerir.
Örnek:
Yeniden boyutlandırma işlemini içeren bir kuyruk sınıfı oluşturalım:
class ResizableQueue: def __init__(self, capacity=10): self.queue = [None] * capacity self.front = self.size = 0 self.rear = -1 self.capacity = capacity def enqueue(self, item): if self.size == self.capacity: self.resize(2 * self.capacity) # Kapasite dolu, 2 katına çıkar self.rear = (self.rear + 1) % self.capacity self.queue[self.rear] = item self.size += 1 def dequeue(self): if self.is_empty(): return "Kuyruk boş." removed_item = self.queue[self.front] self.front = (self.front + 1) % self.capacity self.size -= 1 if 0 < self.size == self.capacity // 4: # Kullanım oranı %25 ise self.resize(self.capacity // 2) # Kapasiteyi yarıya indir return removed_item def is_empty(self): return self.size == 0 def resize(self, new_capacity): new_queue = [None] * new_capacity for i in range(self.size): new_queue[i] = self.queue[(self.front + i) % self.capacity] self.queue = new_queue self.front = 0 self.rear = self.size - 1 self.capacity = new_capacity
Bu kod, kuyruğun dolu olduğunda kapasiteyi iki katına çıkarır ve kullanım oranı %25'in altına düştüğünde kapasiteyi yarıya indirir. resize metodu, yeni bir dizi oluşturur ve eski dizinin içeriğini kopyalar, böylece kuyruğun dinamik olarak yeniden boyutlandırılmasını sağlar.
0 Comments
Recommended Comments
There are no comments to display.