Oguz tarafından, Eylül 11, 2009 tarihinde yazılmıştır.
Etiketler algorithm, algoritma, bubble sort, c, cplusplus, java, kabarcık sıralaması, sıralama algoritması, sorting algorithm
Daha önceki yazılarımdan birinde(Selection Sort) sıralama algoritmalarına küçük bir giriş yapmıştım. Bu yazı da onun devamı niteliğinde olacak ama açıklama için yine işi daha iyi birilerine (Wiki) bırakacağım. Bubble sort için C/C++ ve Java’da yazdığım kodları yazmam yeterli olur sanırım.
Bu arada Java’da yazdığım kod sayısı 100 satırı geçti bunlarla birlikte :P “Hello World” un üstüne bayağı şey yapmışım demek ki :)
C/C++ Kodu :
void bubbleSort(int dizi[], int elemanSayisi)
{
int temp;
int i, j;
for (i=1; i<elemanSayisi; i++)
{
for (j=0; j<elemanSayisi-i; j++)
{
if(dizi[j] > dizi[j+1])
{
temp = dizi [j];
dizi [j] = dizi [j+1];
dizi [j+1] = temp;
}
}
}
}
Java Kodu :
public static void BubbleSort(int [] dizi)
{
int temp; // Yer değiştirmede kullanılacak geçici değişken
for (int i=1; i<dizi.length; i++)
{
for(int j=0; j<dizi.length-i; j++)
{
if (dizi[j] > dizi [j+1])
{
temp = dizi [j];
dizi [j] = dizi [j+1];
dizi [j+1] = temp;
}//Önce gelen elaman bir sonrakinden büyükse ikisi yer değiştiriyor
}// Dizinin ardışık elamanlarını karşılaştırmak için kullandığımız döngü
}// Her karşılaştırmadan sonra yeniden kaldığımız yerden devam etmemizi sağlayan döngü
}
İlgili olabilecek yazılar:
- Java :: XML Dosyası Oluşturma
- Java :: Email Regex
- Java :: Objelerin Sıralanması
- Android :: SdCard İçinde Alt Klasör Oluşturma
- Android :: Statik Html ve JavaScript
“Sıralama Algoritmaları [2] : Bubble Sort” yazısına 21 yorum
Bir cevap yazın
Son 10 yazı
- Look Out!
- Android :: Enable / Disable Wifi
- WordPress :: Tema’da “Anasayfa” Bağlantısının Olup/Olmaması
- Java :: XML Dosyası Oluşturma
- Java :: Email Regex
- Android :: ADB Connection Timeout Problemi
- Android :: AVD Başlatılamaması Problemi
- İşte Tam Da Bu Günlerde
- Java :: Objelerin Sıralanması
- Android :: SdCard İçinde Alt Klasör Oluşturma
Kategoriler
- algoritmalar (3)
- android (10)
- c (1)
- çalışmalar (4)
- cSharp (4)
- genel (11)
- java (15)
- linux (2)
- müzik (3)
- php (5)
- projeler (5)
- r-tree (1)
- satranç (4)
- seminer (2)
- yazılım mühendisliği (1)
Arşivler
- Ocak 2012 (1)
- Aralık 2011 (2)
- Kasım 2011 (1)
- Ekim 2011 (1)
- Eylül 2011 (3)
- Temmuz 2011 (1)
- Haziran 2011 (1)
- Mayıs 2011 (1)
- Nisan 2011 (3)
- Mart 2011 (1)
- Aralık 2010 (1)
- Ekim 2010 (1)
- Eylül 2010 (2)
- Ağustos 2010 (1)
- Temmuz 2010 (1)
- Haziran 2010 (1)
- Mayıs 2010 (1)
- Nisan 2010 (1)
- Mart 2010 (2)
- Ocak 2010 (2)
- Aralık 2009 (1)
- Ekim 2009 (2)
- Eylül 2009 (1)
- Ağustos 2009 (1)
- Mayıs 2009 (1)
- Nisan 2009 (1)
- Mart 2009 (4)
- Şubat 2009 (5)
- Ocak 2009 (4)
- Aralık 2008 (1)
Hocam biraz açıklama iyi olur bence. Bu arada önemli olan quickle, merge gerisi yalan :P
Selection Sort’u yazdığım zaman da “Küçük boyutlu dizilerde fazla kod yazmaya gerek kalmadan kullanılabilecek bir algoritmadır.” ifadesini kullanmışım, bu da aynı kategoride. Gerisi yalan diyorsun ama bu kadar basit değil onları yazmak ve her zaman gerek duyulmaz. Ufak tefek işlerde kullanabilirsin ya da bellek veya zaman sıkıntın yoksa yine kullanabilirsin, sonuçta çalışıyor :)
Hocam amaç kısa yazmaksa tek fonksiyonlada halledersin(qsort()*). Bellek ve zaman kısıtın olmasa bile fazla mal göz çıkarmaz :P Ama tabi bunlarda öğrenilmesi muhakkak gerek tabi. Öğrenilmesin demiyorum. Ama önemli olan o ikisi
——–
*:http://en.wikipedia.org/wiki/Qsort_%28C_standard_library%29
Burdaki yazıları işini iyi yapanlar için değil de başlangıç seviyesindeki insanlar için yazıyorum. Belki google’dan sağdan soldan bir şekilde buraya ulaşırlar da bir şeyler öğrenirler. Ben öyle öğrenmeye çalışıyorum en azından.
Önce basit olanları yazalım ki benim gibi acemiler direkt quick ya da merge sort ile baş etmek yerine mantığı kavrayarak ilerlesinler. İlerde onları da yazarız :)
Estağfirullah, zaten anlattıklarınız çok güzel şeyler. Ben sadece onların daha iyi olduğunu vurguladım. Anlaşma sorunu oldu. Devamını bekleriz..
bubble çok ilkel bir algoritma ;
merge en mantıklı olan ama oda zor
İlkel olabilir ama mantıklı derken iki defa düşün derim. 20 elemanlı diziyi sıralamak için Merge Sort’u yazmak pek mantıklı iş olmasa gerek.
haklısın ama bizim işimiz daha çok geniş inputlar üzerinde değilmi
Yaptığınız işin ne olduğunu bilmiyorum ama defalarca söylediğim gibi küçük boyutlu işlerde kullanılabilir, kod verimsiz ama basit yazılır vs.. Sizin ya da benim ya da bir başkasının işi daha çok geniş inputlar üzerinde olabilir ama bu yazdıklarıma da ihtiyacı olanlar var. Belki arama motorundan gelip işine yarayan bir şeyler öğrenir. Tek gaye bu..
hocam bu fonksiyonu main in içinde nasıl çağırabiliriz?
C ya da C++’da main içinde bir dizi tanımladıktan sonra, örneğin
int sayilar[10];
ve eleman atamalarından sonra,
bubbleSort(sayilar[], 10);
şeklinde çağırabilirsin. Java’da direkt
BubbleSort(sayilar); şeklinde kullansan olur.
bence sen bubleshort algoritmasına bidaha bak 0. elemanı sırasıyla 1,2,3,4,5,…. elmanlarlamalısın daha sonra 1. elamanı 2.3…… sense 0 ı 1le 1 i 2 ….. diye yapmıssın bu insertion short gibi bisey olmus ama kesinlikle buble degıl…saygılarımla
Yorum için teşekkürler. Buraya yazarken içteki for’da eleman_sayısı – i yerine eleman_sayısı – 1 yazmışım. O kısmı düzenledim, artık bubble sort olmuştur umarım.
yine olmadı amacın dizinin 0 cı elemanını sırasıyla 1 2 3….n le karsılastırmak onun icin i yi 0 dan baslat j yide i+1 den baslat icerdede dizi[i] ile dizi[j] yi karsılastır bu sekilde dizi[i] dizi[0] iken dizi[j] artarak dizi[0] ile karsılastırrılacak ve sonuc olarak en kucugu en basa almıs olducaksın i artınca kalanelmanlardan dizinin enkucuk ıkıncı elemanını sececeksın bu sekılde sıralama dewam edicek
kısacası bu sıralama 1 elemanla dıger butun elamanları karsılastırmıs ve en kucugu basa alarak sıralayan bı sıralama cesıdı.
ben bu işe yeni başladım benim bu kodlardan anladığım mantık şu:
dizinin sıfırıncı gözündeki değerle birinci gözündeki değeri karşılaştırıyor eğer [0]>[1] ise sıfırıncı değer birinci değerle yer değiştiriyor bu işlem dizinin bütün elemanlarına uygulanıyor… doğrumu bu acıklama
@öğrenci
Tam olarak değil. O dediğini dizinin boyutu-1 defa tekrarlıyor.
@öğrenci, @ALGO
Bubble Sort ile ilgili olarak Türkçe wiki’de şöyle yazıyor :
“Kabarcık sıralaması dizinin başından başlar ve dizi elemanlarını sırayla seçer. Seçilen dizi elemanı kendinden sonra gelen elemandan büyükse bu iki elemanın yerleri değiştirilir. Bu işlem sonucunda dizinin en büyük elemanı dizi sonuna yerleştirildiğinden bir sonraki adımda arama sınırı bir eleman geri çekilir. Bu işlem, dizinin sonundaki elemanın karşılaştırılmasına kadar yinelenerek sürdürülür.”
phpde dizi elemanlarını sıralamak için sıralama fonksiyonlarını kullanmadan(sort rsort asort…vb) nasıl yapabiliriz…
@ibrahim
şu yukarda yazılı olan C/C++ kodunu Php’ye uyarlayıp yapabilirsin ya da google’da ‘bubble sort php’ diye yazıp arattığında bi sürü örnek çıkıyor.
hocam öncelikle bizleri aydınlattıgınız için teşekkürler.bu sıralama algoritmaları ile ilgili bir sorum olacaktu size.sıralama algoritmalarından secerek sıralama da bir şey kafama takıldı.çift yönlü secerek sıralama die birşey okudum c’de ama çözemedim tam mantıgını yardımcı olabilirseniz minnettar olurum.
@yakup
yorumunu yeni gördüm onayladım kusura bakma geç kaldım sanırım biraz. O dediğine bakmadım daha önce hiç, fırsatım olursa bakıp yine buradan anladığım kadarıyla bilgi veririm. Belki bir başkasının işine yarar.