Sıralama Algoritmaları Nedir?- Sorting Algorithm yazım ile yeni bir konuya giriş yapıyoruz. Artık ufak ufak yapay zeka, makine öğrenmesi gibi konulara giriş yapmak istiyorum. İlk olarak bazı temel konuları kavrayabilmek adına denemeler yaparak ders ve proje olarak paylaşacağım. İlk olarak da Sıralama algoritmaları konusunda gireceğiz. Sonrasında TSP yani Traveling Salesman Problem (Gezici Pazarlamacı Problemi) gibi problemlerin nasıl çözümlenebileceği gibi konulara değineceğiz.
Sıralama Algoritmaları Nedir? – Sorting Algorithm
Sıralama Algoritması Nedir?
Sıralama Algoritması bilgisayar ya da matematik bilimlerinde kullanılan, mevcut bir listedeki elemanları belirli bir sıraya sokan algoritmadır. Sıklıkla küçükten büyüğe doğru ve alfabetik sırlamalar kullanılır. Bu algoritmaların geliştirilmesindeki temel amaç büyük miktardaki verileri, insanlar tarafından rahatça anlaşılabilmesi için olabildiğince hızlı bir şekilde sıralamaktır.
Sıralama Algoritmaları
- Seçmeli Sıralama Algoritması (Selection Sort)
- Eklemeli Sıralama Algoritması (Insertion Sort)
- Kabuk Sıralama Algoritması (Shell Sort)
- Birleştirmeli Sıralama Algoritması (Merge Sort)
- Hızlı Sıralama Algoritması (Quick Sort)
- Kabarcık Sıralama Algoritması (Bubble Sort)
Sıralama Algoritmaları, adına bakıldığın da basit bir yapı gibi görünse de çözümlenmesi çok karmaşık olan bir işlemi gerçekleştirdikleri için üzerinde çok fazla araştırma ve geliştirme yapılan bir bilgisayar bilimi konusudur. Mevcut algoritmalar ile bu sorunun çözülmüş olduğu düşünülse dahi hala bir çok araştırma yapılmaktadır.
Sınıflandırma Ölçütleri
Sıralama Algoritmaların 7 farklı ölçüte göre sınıflandırılmaktadır.
- Hesaplama Karmaşıklığı: Mevcut dizideki nesnelerin karşılaştırılmasının en iyi, ortalama ve en kötü başarımının dizinin eleman sayısı (n) cinsinden gösterilmiş halidir. Genellikle uygulamalarda iyi durum başarımı O(n log n) ve en kötü durumu başarımı da Ω(n²) şeklinde ifade edilir. Bir sıralama algoritmasında istenen karmaşıklığı O(n) ile ifade edilir. Soyut bir anahtar karşılaştırması yapan tüm algoritmalar en kötü durum için her zaman Ω(n log n) karşılaştırma yaparlar.
- Yer Değiştirme Karmaşıklığı: (yerinde sıralama algoritmaları için).
- Bellek Kullanımı: Bazı sıralama algoritmaları yapısı gereği işlemlerini dizinin saklandığı bellek alanında yaparken, bazıları da sıralamayı yapabilmek için ekstra bir alana ihtiyaç duyarlar. Dizinin saklandığı bellek alanında işlem yapan algoritmalar O(1) ya da O(log n)’lik ek alan gerekir.
- Özyineleme (Recursive): Bazı algoritmalar ya Recursive (Özyinelemeli) ya da Non Recursive (Özyinelemesiz) çalışırken birleştirmeli sıralama algoritması gibi algoritmalar iki biçimle de uygulanabilir.
- Kararlılık
- Karşılaştırma Sırası Kontrolü: Sıralanacak verilerin karşılaştırma işlemi kullanarak ve karşılaştırarak inceler.
- Genel Yöntem: Değiştirme, Seçme, Birleştirme, Araya Sokma gibi değiştirme sıralamalarına kabarcık ve hızlı sıralama algoritmaları örnek gösterilebilir.
Karşılaştırma İle Sıralama Yapan Algoritmalar
Karşılaştırmadan Sıralama Yapan Algoritmalar
Verimsiz Sıralama Yapan Algoritmalar
Sıralama Algoritmaları Temel Kavramlar
O = (Büyük O , Big-Oh) : Bu ifade matematiksel bir ifade olup işlevlerin yani fonksiyonların asimptotik davranışlarını ifade etmek için kullanılmaktadır. Yani bir işlevin (fonksiyonun) büyümesinin asimptopik üst sınırını daha basit başka bir işlev cinsinden tanımlanması demektir. Bilgisayar bilimleri konusunda algoritmaların karmaşıklığının çözümlenmesi amacı ile kullanılır.
Asimptotik: Matematikte fonksiyonların limitini gösterme amacı ile kullanılmaktadır. Bu gösterim metodunda f(n) benzeri bir fonksiyonun n için çok büyük değerlerinin davranışı incelenir. Aşağıdaki görseli inceleyebilirsiniz.
Bu tabloya göre x’in değeri yükseldikçe, x2’ye göre diğer ifadelerin yani 3x ve *7 ‘nin katkılarının ne kadar da önemsiz olduğunu görebilirsiniz. Bu durumda şunu diyebiliriz,” f(x) fonksiyonu sonsuza giderken, fonksiyon asimptotik olarak f(x) = x2’e eşdeğerdir.
Sıralama Algoritmaları Nedir- Sorting Algorithm yazımda bu kadar arkadaşlar. Diğer yazılarımızda görüşmek üzere… Yapay Zeka konulu diğer yazılarım için bağlantıya tıklayabilirsiniz.
Bu başlık altında hazırladığım projeleri de github profilimde bulabilirsiniz. Ayrıca bu yazının PDF’ine buraya ve ya buraya tıklayarak ulaşabilirsiniz.
Bol kodlu günler… ;)