Sıralama Algoritmalarına Genel Bakış ve Baloncuk Sıralama Algoritması (BubbleSort)

Sıralama, genel olarak dizilerin veya herhangi bir veri yapısının elemanlarının istenilen düzene getirilmesi olarak ifade edilebilir. Bu düzenin temel olarak küçükten büyüğe veya büyükten küçüğe olması mümkündür. Sıralanmak istenilen elemanlar sayılar veya metinsel ifadeler gibi kavramlar olabilir. Bu amaçla geliştirilmiş çeşitli sıralama algoritmaları bulunmaktadır.

  • Baloncuk sıralaması (bubble sort)
  • Seçmeli sıralama (selection sort)
  • Araya sokarak sıralama (insertion sort)
  • Hızlı sıralama (quick sort)
  • Birleştirerek sıralama (merge sort)
  • Yığın sıralaması (heap sort)

Bu algoritmaların hepsinin kendine özel çalışma mantıkları bulunmaktadır. Kullanılacak sıralama algoritması seçilirken uygulanacak veri yapısı detaylı olarak ele alınmalıdır. Örneğin, Quicksort çok hızlı bir algoritmadır ancak uygulanması nispeten karmaşıktır, bu nedenle küçük veri grupları için pratik olmayabilir. Kabarcık sıralama ise yavaş bir algoritmadır fakat uygulanması çok kolaydır. Sıralama algoritmalarının çalışma hızları sıralanacak verinin büyüklüğü, kısmen sıralı olması, tersten sıralı olması veya tümüyle karışık yapıda olmasına bağlı olarak farklılık göstermektedir. Seçim yapılırken verinin bu anlamda değerlendirilmesi ve uygun algoritmanın tercihi en iyi sonuç için faydalı olacaktır.

Belli başlı bazı sıralama algoritmalarının 3 değişik durumda ki complexity değerleri aşağıda ki tabloda yer almaktadır.

2,4 GHz Intel Core İ7 CPU ile yapılan örnek bir performans testi aşağıda gözükmektedir.

Ayrıca bu siteden de değişik türden algoritmaların  farklı veri yapılarına göre performanslarını kıyaslayabilirsiniz. 

Sıralama algoritmaları hakkında bu kısa genel bilgiden sonra Baloncuk Sıralaması algoritması hakkında küçük bir bilgi verdikten sonra yaptığım algoritmanın flowchart’ını sizinle paylaşıyor olacağım.

Baloncuk sıralaması dizinin her bir konumundaki elemanı sırasıyla bir sonraki konumdaki eleman ile karşılaştırılır. Dizinin küçükten büyüğe doğru sıralanması istenirse bu karşılaştırma esnasında mevcut elemanın sonraki dizi elemanından büyük olup olmadığı kontrol edilir. Bu şartın sağlandığı sonucuna varılırsa iki eleman yer değiştirilir. Aksi durumda ise herhangi bir yer değiştirme işlemi yapılmaz ve karşılaştırmaya bir sonraki konumdaki dizi elemanı ile devam edilir. Bu işlem dizinin son elemanına ulaşıncaya kadar sürdürülür. Dizinin başından sonuna doğru yapılan bu karşılaştırma tamamlandığında algoritmanın bir adımı (iterasyonu) tamamlanmış olur. Sonuç olarak dizinin en büyük elemanı konum olarak dizinin en sonuna yerleşmiş olacaktır. Bu algoritma adımları n elemanlı bir dizi için n-1 defa tekrarlandığında tamamen sıralı bir dizi elde edilmiş olunur.

Flowgorithm uygulaması ile yaptığım bir flowchartı aşağıda incelemenize sundum. 

Ayrıca programın tamamını da buradan indirebilirsiniz.

Python kodlarını da buradan indirebilirsiniz.

Paylaşmayı unutmayın!
0 0 votes
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments