Jump to content
  • entries
    33
  • comments
    0
  • views
    69,722

Shrinking the Underlying Array (Altta Yatan Diziyi Küçültme)


Doğuhan ELMA

135 views

"Shrinking the Underlying Array" (Altta Yatan Diziyi Küçültme), bir veri yapısının (örneğin bir dizi listesi veya kuyruk) kullanmadığı belleği serbest bırakmak için kullanılan bir tekniktir. Bu yaklaşım, gereksiz bellek kullanımını en aza indirmek ve dolayısıyla daha etkili bir bellek yönetimi sağlamak için kullanılır.

Neden Gerekli?

Bir veri yapısı içindeki öğeler çıkarıldıkça, kullanılmayan bir alan oluşabilir. Bu durum, kullanmadığınız bellek alanı kapladığından, gereksiz bir yük oluşturabilir. Bu nedenle, kullanılmayan bu alanı serbest bırakmak ve gereksiz bellek kullanımını azaltmak yararlı olabilir.

Nasıl Çalışır?

Kullanılmayan alanın bir sınırın altına düştüğünü tespit ettiğinizde, altta yatan diziyi küçültebilirsiniz. Bu genellikle, dizinin boyutunu belirli bir oranda azaltmak için yeni bir dizi oluşturmayı, eski dizinin içeriğini yeni diziye kopyalamayı ve eski diziyi yeni diziyle değiştirmeyi içerir.

Örnek:

Bir dizi listesi uygulamasında, altta yatan diziyi küçültme işlemi şu şekilde yapılabilir:

class DynamicArray:
    def __init__(self):
        self.capacity = 10
        self.size = 0
        self.array = [None] * self.capacity

    def append(self, value):
        if self.size == self.capacity:
            self.resize(2 * self.capacity)
        self.array[self.size] = value
        self.size += 1

    def pop(self):
        if self.size == 0:
            return "Dizi boş."
        removed_item = self.array[self.size - 1]
        self.size -= 1
        if self.size < self.capacity // 4: # Kullanım oranı %25 ise
            self.resize(self.capacity // 2) # Kapasiteyi yarıya indir
        return removed_item

    def resize(self, new_capacity):
        new_array = [None] * new_capacity
        for i in range(self.size):
            new_array[i] = self.array[i]
        self.array = new_array
        self.capacity = new_capacity

Bu örnekte, pop metodu kullanılarak bir öğe çıkarıldığında, dizi boyutu kapasitenin %25'ine düştüğünde, kapasite yarıya indirilir. Bu, resize metodu aracılığıyla yapılır, ve bu sayede, gereksiz bellek kullanımı en aza indirilir. Bu tür bir yaklaşım, büyük veri yapılarında önemli miktarda bellek tasarrufu sağlayabilir.

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...