Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Space Complexity'yi Hep Unutuyorum, Sadece Ben mi Böyleyim?

devron

Üye
Katılım
14 Mart 2026
Mesajlar
27
🤯 Kafamdaki Tek Ölçüt: O(n log n)

Dostlar, itiraf zamanı. Bir algoritma düşünürken veya mülakatta bir soruya cevap verirken, aklıma ilk gelen şey hep time complexity. "Bu işlem O(n^2) mi, O(n log n) mi?" diye kafamı yoruyorum ama space complexity aklıma sonra geliyor, hatta bazen hiç gelmiyor. Sanki hafıza bedava, RAM'ler uçuyormuş gibi kod yazıyorum. Sizde de böyle mi?

💾 "Memory? Oh, Evet, O Da Var..." Anıları

Geçenlerde basit bir işlem için recursive bir fonksiyon yazmıştım. Fonksiyon güzel çalışıyordu, zaman açısından da verimliydi. Ta ki, biraz büyük bir input verene kadar.

Python:
def fibonacci_naive(n):
    if n <= 1:
        return n
    return fibonacci_naive(n-1) + fibonacci_naive(n-2)

Bu kodu görünce hepiniz "Eyvah!" dediniz değil mi? Zaman karmaşıklığı berbattı evet, ama beni asıl yıkan, stack'in O(2^n) seviyesinde call ile dolup taşması ve programın "RecursionError" diye haykırması oldu. O an fark ettim ki, ben sadece ekrandaki sonucun ne zaman geleceğine odaklanmışım, bilgisayarın içinde neler olduğuna hiç bakmamışım.

🚀 "Temiz Kodu" Yanlış Anlamak

Bir başka yaygın hata: Kodu "temiz" ve "okunabilir" yapayım derken, gereksiz yere yeni listeler, dictionary'ler oluşturmak. Mesela, bir listeyi filtreleyip yeni bir liste döndüren bir fonksiyon yazdığımızı düşünelim. İç içe iki list comprehension kullanıp, aslında tek seferde halledilebilecek bir işi, iki katı memory kullanarak yapabiliyoruz. Input küçükken sorun yok, ama işler büyüyünce o masum görünen ek liste, performansı ciddi etkileyebiliyor.

🔍 Artık Bilinçli Bakmaya Çalışıyorum

Şimdi kendimi eğitmeye çalışıyorum. Bir veri yapısı seçerken (Array mi, LinkedList mi?) veya bir algoritma tasarlarken şu soruları sormaya başladım:
Bu ekstra hash table, ne kadar yer kaplayacak?
Recursive çözüm, call stack'imi şişirir mi?
Burada in-place bir işlem yapabilir miyim, yoksa yeni bir obje mi oluşturuyorum?

Özellikle embedded sistemler, mobil uygulamalar veya büyük veri işlerinde, space complexity'nin time'dan daha kritik olabildiğini fark ettim. CPU hızlı, ama RAM doluysa hiçbir şey yapamazsın.

Peki ya siz? Siz de benim gibi space complexity'yi hep ikinci plana atanlardan mısınız? Yoksa "memory-first" diyerek mi kod yazıyorsunuz? Büyük veriyle uğraşırken space için kullandığınız ilginç taktikler var mı? Anlatın da öğrenelim!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri