Algoritma, bir programın nasıl çalışacağını belirleyen basit bir taslaktır. Yazılım dünyasında algoritma nedir sorusuna verilebilecek en kısa ve öz cevaplardan biri budur. Tanımsal olarak ise algoritma; belirli bir sorunun çözümü için yapılması gereken tüm işlemlerin sıralı ve mantıksal olarak basitçe ifade edilme şeklidir.
Konu Başlıkları
Günlük hayattan bir örnek vererek tüm anlatılanları basitçe netleştirebiliriz. Örneğin makarna yapmanın algoritması:
Burada problem makarna yapmaktır.
- Başla.
- Tencereye su doldur.
- Tencereyi ocağa koy, ocağın altını aç.
- Suyun kaynamasını bekle.
- Su ancak kaynayınca makarnayı tencereye koy.
- Makarnanın yeterli süre haşlanmasını bekle.
- Makarna haşlanınca tencereden tabağa koy.
- Tabağı masaya koy.
- Bitir. (Makarnayı değil programı)
Bu bahsedilen işlemler makarna tarifi gibi görünüyor olsa da aslında makarna yapmanın algoritmasıdır denebilir.
Yazılımda Algoritma Nedir?
Algoritma yazılım için vazgeçilmez bir unsurdur. Hiç bir yazılım algoritma hesaplanmadan yapılamamaktadır. En basitinden en karmaşığına kadar bütün yazılımların temel yapı taşını algoritma oluşturur. Örnek olarak televizyon, buzdolabı gibi elektronik ev aletlerinin amaca uygun hareket edebilmesi için algoritmaları hesaplanması gerekmektedir.
Akıllı telefonlarımızın aldığı güncellemelerin çoğu algoritmadaki hataların giderilmesi amacıyla gerçekleşmektedir. Yani özetle yazılımın a’sından z’sine kadar algoritma bulunmaktadır. Algoritmanın dahil olmadığı bir yazılım yoktur.
Peki ya Algoritma Nedir? Bu sorunun yanıtını kapsamlı olarak yanıtlayalım:
Algoritma Akış Şemaları
Makarna yapma algoritması örneğinde anlatmış olduğumuz makarna tarifi ile algoritmayı yazı ile anlatmıştık. Aynı durumu biraz daha farklılaştırarak basit bir şema haline getirip görselleştirmeye akış şeması veya akış diyagramı diyoruz. Bu sayede algoritmanın neden sonuç ilişkilerini görsel olarak kişiye aktarılmasını sağlar ve “Başlangıç” noktasından “Bitiş” noktasına kadar olan tüm ihtimaller kodlanmak üzere yazılımcıya yol göstermiş olur.
Yazılım Dünyasındaki Popüler Algoritmalar
Bazı algoritmalar yazılım dünyasında oldukça popüler. Her algoritma türü aynı değil. Her program da aynı değil. Programlar farklı metotlar ile kodlanıyor, geliştiriliyor. Bu süreçlerde kullanılan algoritmalar da programlara ve türlerine göre farklılık gösterebiliyor. Bu algoritmalardan bazıları ise şu şekilde;
Sıralama Algoritmaları
Sayı olarak fazla olan öğeleri yüksekten düşüğe ya da tam tersi şekilde düşükten yükseğe gibi belirli bir sıralamaya göre yeniden düzenlenme yöntemidir. En sık kullanılan sıralama algoritmaları şunlardır:
Quick Sort, Insertion Sort, Bubble Sort, Merge Sort, Selection Sort, Heap Sort, Radix Sort, Bucket Sort, Counting Sort, Shell Sort.
1. Quick Sort(Hızlı Sıralama)
Quick Sort, böl ve yönet yaklaşımına dayalı bir sıralama algoritmasıdır .
Bir diziden seçilen eleman alt dizilere bölünürerek devam eder .
Dizi bölünürken seçilen eleman, pivottan(diziden seçilen eleman) küçük elemanlar pivotun sol tarafında ve pivottan büyük elemanlar pivotun sağ tarafında kalacak şekilde yerleştirilmelidir.
2. Insertion Sort(Ekleme Sıralaması)
Ekleme sıralama, sıralanmamış bir öğeyi her yinelemede uygun yerine yerleştiren bir sıralama algoritmasıdır .
Yerleştirmeli sıralama, tıpkı bir kart oyununda elimizdeki kartları sıraladığımız gibi çalışır. İlk kartın zaten sıralandığını varsayıyoruz, ardından sıralanmamış bir kart seçiyoruz. Sıralanmamış kart eldeki karttan büyükse, sağa, aksi halde sola yerleştirilir. Aynı şekilde diğer sıralanmamış kartlar da alınır ve doğru yerlerine konur. Benzer bir yaklaşım, eklemeli sıralama tarafından kullanılır.
3. Buble Sort(Kabarcık Sıralaması)
Buble Sort, iki bitişik öğeyi karşılaştıran ve istenen sıraya gelinceye kadar değiştiren bir sıralama algoritmasıdır. Tıpkı sudaki hava kabarcıklarının yüzeye çıkan hareketi gibi, dizinin her bir elemanı her yinelemede sona doğru hareket eder. Bu nedenle, bir kabarcık sıralama denir.
4. Heap Sort(Yığın Sıralama)
Yığın Sıralama, bilgisayar programlamada popüler ve verimli bir sıralama algoritmasıdır . Yığın sıralama algoritmasının nasıl yazılacağını öğrenmek, iki tür veri yapısı bilgisi gerektirir – diziler ve ağaçlar.
Sıralamak istediğimiz ilk sayı kümesi bir dizide saklanır, örneğin;
İlgini Çekebilir
[11, 4, 77, 35, 24, 33] ve sıralamadan sonra sıralanmış bir dizi elde ederiz [4,11,24,33,35,77].
Yığın sıralama, dizinin öğelerini yığın adı verilen özel bir tam ikili ağaç türü olarak görselleştirerek çalışır.
5. Merge Sort(Birleştirme Sıralaması)
Merge Sort, Böl ve Yönet Algoritması ilkesine dayanan en popüler sıralama algoritmalarından biridir .
6. Selection Sort(Seçim Sıralaması)
Seçim sıralama, her yinelemede sıralanmamış bir listeden en küçük öğeyi seçen ve bu öğeyi sıralanmamış listenin başına yerleştiren bir sıralama algoritmasıdır.
7. Radix Sort
Radix sıralama, önce aynı basamak değerinin tek tek basamaklarını gruplayarak öğeleri sıralayan bir sıralama algoritmasıdır . Ardından öğeleri artan/azalan sırasına göre sıralayın.
Diyelim ki 8 elemanlı bir dizimiz var. İlk olarak, öğeleri birim yerin değerine göre sıralayacağız. Ardından, onuncu yerin değerine göre öğeleri sıralayacağız. Bu işlem son önemli yere kadar devam eder.
8. Bucket Sort(Kova Sıralaması)
Bucket Sort, sıralanmamış dizi öğelerini kova adı verilen birkaç gruba ayıran bir sıralama algoritmasıdır. Her bir kova daha sonra uygun sıralama algoritmalarından herhangi biri kullanılarak veya aynı kova algoritması yinelemeli olarak uygulanarak sıralanır.
Search (Arama) Algoritmaları
Arama algoritmaları, bir veri topluluğu üzerinde belirli bir verinin aranması için kullanılmakta olan algoritmalar bütünüdür. Bir veri grubu ya da dizi üzerinde arama yapılacaksa sequential search ve ınterval search olmak üzere iki temel kategori bulunmaktadır. Sequential Search: Veri grubunda verilerin belli bir sıra ile tutulmadığı aramalarda kullanılan algoritmadır. Interval Search: Sıralı bulunan veri yapıları üzerinde kullanılan arama algoritmasıdır.
Dijkstra Algoritması: Oldukça basit bir mantıkla oluşturulmuş ve günümüzde oldukça sık kullanılan algoritmalardan biridir. Bu algoritmanın kullanma amacı, çıkış noktası olarak belirlenen noktadan farklı düğümler aracılığı ile en kısa yolu kullanarak hedefe ulaşmaktır. Dijkstra algoritması, bir düğümden başka bir düğüme geçerken ‘en mantıklı ve en iyi’ çözüm yöntemini seçmektedir.
Algoritma Nedir Sonuç;
Özetle basit bir şekilde yazılımda algoritma nedir sorusunu yanıtlayacak olursak: Yazılım dünyasında belirli bir sıra ile problemlerin çözülmesi ve sonucunda amaca ulaşılması işlemidir. Algoritma bir programlama dili değildir burada tek amaç ihtiyaç ve isteklerin karşılanmasıdır.