menu search
  • Kaydol
brightness_auto

Hoş geldiniz! TÜRKLER SORUYOR PLATFORMU'na katılmak ister misiniz? Hemen kayıt olun veya giriş yapın.

more_vert
"Algoritma" nedir ?
thumb_up_off_alt 0 beğenilme thumb_down_off_alt 0 beğenilmeme

1 cevap

more_vert

Algoritma, bilişimde en temel yapı taşıdır ve onu sadece bir "kod parçası" olarak düşünmemen gerekir. En basit haliyle algoritma, belirli bir sorunu çözmek veya bir işlevi gerçekleştirmek için izlenen, sonlu ve kesin adımlar dizisidir. Bu adımlar, başlangıçtan sonuca kadar her durumu öngörür ve herhangi bir belirsizlik (ambiguité) bırakmaz. Bir tarifte "biraz tuz ekleyin" demek algoritma değildir; "5 gram tuz ekleyin" demek algoritmadır.

Neden "Hız" ve "Doğruluk" İkilemi?

Yeni başlayanlar genellikle algoritmanın sadece "çalışması" gerektiğini düşünür. Ancak gerçek dünyada, özellikle büyük ölçekli verilerle (Big Data) çalışırken, zaman karmaşıklığı (Time Complexity) ve mekân karmaşıklığı (Space Complexity) hayat kurtarır.

Örneğin, 10 milyon kayıtlı bir listeden belirli bir ismi arıyorsan:
1. Naive Yaklaşım: Listeyin başından sonuna kadar tek tek tararsın (Lineer Arama - O(n)).
2. Akıllı Yaklaşım: Listeyi önceden sıralarsın ve ikili arama (Binary Search - O(log n)) kullanırsın.

İkinci yöntem, veri seti büyüdükçe performansı katlanarak artırır. İşte algoritma tasarımındaki asıl uzmanlık, bu karmaşıklık sınıfını minimize etmektir.

Pratikte Düşünce Şekli

Algoritmayı tasarlarken şu 3 adımı takip etmeni öneririm:

  • Sorunu Küçült: Büyük problemi daha küçük, yönetilebilir alt problemlere böl (Örn: Böl ve Yönet / Divide and Conquer).
  • Veri Yapısını Seç: Veriyi nasıl saklarsan, işlem yapma hızın da ona bağlıdır. Bir HashMap (Hash Tablosu) ile arama yapma hızı, düz bir Array (Dizi) ile arama yapmaktan kat kat hızlıdır çünkü O(1) ortalama erişim sağlar.
  • Kenar Durumlarını (Edge Cases) Test Et: Boş liste, tek elemanlı liste veya aşırı büyük sayılar gibi senaryolarda algoritmanın çökmediğinden emin ol.

Somut Bir Örnek: Döngüsel Bir Sorun

Kendi deneyimlerimden bir örnek vereyim: Eski bir projede, kullanıcıların geçmiş siparişlerini listelerken sayfalar arasında gecikme (lag) yaşıyorduk. Sorun, her sayfa yüklenmesinde tüm veritabanını sorgulamak ve sonucu bellekte filtrelemektik. Algoritma değişikliği olarak önceden hesaplanmış indeksleme ve sayfalama (pagination) mantığını ekledik. Sonuç? Yanıt süresi 2 saniyeden 50 milisaniyeye düştü.

Unutma, algoritma yazmak sanat değil, mühendisliktir. Karmaşık görünen sorunları, basit ve tekrarlanabilir adımlara indirgeyebilmek, bir yazılım geliştiricisinin en kritik becerisidir. Kodun ne kadar "güzel" olduğundan çok, ne kadar verimli ve okunabilir olduğu önemlidir.

thumb_up_off_alt 0 beğenilme thumb_down_off_alt 0 beğenilmeme

İlgili sorular

thumb_up_off_alt 3 beğenilme thumb_down_off_alt 0 beğenilmeme
1 cevap
thumb_up_off_alt 7 beğenilme thumb_down_off_alt 0 beğenilmeme
1 cevap
thumb_up_off_alt 4 beğenilme thumb_down_off_alt 0 beğenilmeme
1 cevap
thumb_up_off_alt 4 beğenilme thumb_down_off_alt 0 beğenilmeme
1 cevap
thumb_up_off_alt 7 beğenilme thumb_down_off_alt 0 beğenilmeme
3 cevap

12,071 soru

14,440 cevap

4 yorum

190 üye

Çevrimiçi Kullanıcı Sayısı: 78
0 Üye 78 Ziyaretçi
Bugünkü Ziyaretler: 15534
Dünkü Ziyaretler: 21974
Toplam Ziyaretler: 6309556

Son Kazanılan Rozetler

cem_kaya Bir rozet kazandı
emre_kara Bir rozet kazandı
emre_taş_03 Bir rozet kazandı
cem_Çetin Bir rozet kazandı
efe_acar Bir rozet kazandı
...