MATLAB Kabarcık Sıralama ( Bubble Sorting) Algoritması
Bu yazımızda, bir Sıralama algoritması olan “Kabarcık Sıralama” (Bubble Sorting) algoritmasına değineceğiz. Kabarcık Sıralama algoritmasını diziyi küçükten büyüğe sıralamak için kullanacağız.
Kabarcık Sıralama algoritmasının işleyişi, algoritmanın her adımında dizideki iki elemanı karşılaştırma üzerinedir. Küçükten büyüğe sıralama için; dizinin son elemanlarından başlayarak, iki eleman arasında küçük olan her adımda bir sola kayarak başa taşınır.
Görsel Kaynak: Code Pumpkin
Buradaki bağlantıya tıklayarak, sıralama algoritmalarının çalışma şekillerine ait animasyona bakabilirsiniz.
Örnek olarak, “vekt” isimli dizinin adım adım küçükten büyüğe sıralanması:
1
vekt = [3 5 1 10 -3 8];
[3 5 1 10 -3 8]
[3 5 1 -3 10 8]
[3 5 -3 1 10 8]
[3 -3 5 1 10 8]
[-3 3 5 1 10 8]
[-3 3 5 1 8 10]
[-3 3 1 5 8 10]
[-3 1 3 5 8 10]
Algoritmanın kodları:
1
2
3
4
5
6
7
8
9
10
11
12
13
function sirali_vektor = kabarcik_sirala(vektor)
for i=1:length(vektor)-1
for j=length(vektor):-1:i+1
if vektor(j)<vektor(j-1)
depo = vektor(j-1);
vektor(j-1) = vektor(j);
vektor(j) = depo;
%disp(vektor); Algoritmanın adımlarını görmek için.
end
end
end
sirali_vektor = vektor;
end
İlk döngü ( i ) en küçük elemanların atanacağı indisi temsil ediyor. İkinci döngüyü ( j ) ise dizinin iki elemanını kontrol etme amacıyla kullanıyoruz. Algoritma; dizinin son elemanından başlayarak, iki eleman arasındaki en küçük olanı başa taşıyor. Dolayısıyla ikinci döngü ( j ) dizinin son elemanından başlamalı ve son eleman ile kendisinden bir önceki elemanı kontrol ettiği için ilk döngünün bulunduğu yerin bir ilerisinde bitmelidir. (for j=length(vektor):-1:i+1) Dizinin elemanlarının yerlerini değiştireceğimiz için bir saklama değişkeni(depo) kullanıyoruz. Programın ekran görüntüsü:
Fonksiyonun adı ile Script(“.m”) dosyasının adının aynı olması gerektiğini unutmayalım.
Algoritmayı kullanmak için komut penceresine:
1
kabarcik_sirala([%Sıralanmasını istediğiniz dizi])
Bütün MATLAB kodlarına Github sayfam aracılığı ile erişebilirsiniz. Github sayfamın linkine aşağıdan ulaşabilirsiniz. Görüşmek üzere!
Github: Github MATLAB
Sitemize destek olmak isteyen sponsorlar için link: Patreon
Kaynak: Carnegie Mellon University, School of Computer Science, Vikipedi