Rehber PHP Kabarcık Sıralama Algoritması

  • Konuyu başlatan Umutmeister
  • Başlangıç Tarihi
  • Mesaj 2
  • Görüntüleme 2B
U

Umutmeister

Ziyaretçi
Kabarcık Sıralama, yalın bir sıralama algoritmasıdır. Döngü her geçişinde iki elemanı birbiriyle karşılaştırır, karşılaştırılan elemanların arasındaki büyüklük kontrol edilir. Eğer mevcut eleman kendisinden bir sonraki elemandan büyükse yerleri değiştirilir, değilse değiştirilmez. Yalnız bu şekilde yapıldığında dizi artık sıralı olsa bile algoritma bilmeyeceği için geçiş yapmaya devam edecektir, bu da gereksiz işlem yapıldığından dolayı boş boşuna sistemi meşgul edecektir.

İlk Geçiş

  1. ( 5 7 3 8 2 9 ) -> ( 5 7 3 8 2 9 )
  2. ( 5 7 3 8 2 9 ) -> ( 5 3 7 8 2 9 ) 7 ile 3'ün yerlerini değiştir.
  3. ( 5 3 7 8 2 9 ) -> ( 5 3 7 8 2 9 )
  4. ( 5 3 7 8 2 9 ) -> ( 5 3 7 2 8 9 ) 8 ile 2'nin yerlerini değiştir.
  5. ( 5 3 7 2 8 9 ) -> ( 5 3 7 2 8 9 )
İkinci Geçiş
  1. ( 5 3 7 2 8 9 ) -> ( 3 5 7 2 8 9 ) 5 ile 3'ün yerlerini değiştir.
  2. ( 3 5 7 2 8 9 ) -> ( 3 5 7 2 8 9 )
  3. ( 3 5 7 2 8 9 ) -> ( 3 5 2 7 8 9 ) 7 ile 2'nin yerlerini değiştir.
  4. ( 3 5 2 7 8 9 ) -> ( 3 5 2 7 8 9 )
  5. ( 3 5 2 7 8 9 ) -> ( 3 5 2 7 8 9 )
Üçüncü Geçiş
  1. ( 3 5 2 7 8 9 ) -> ( 3 5 2 7 8 9 )
  2. ( 3 5 2 7 8 9 ) -> ( 3 2 5 7 8 9 ) 5 ile 2'nin yerlerini değiştir.
  3. ( 3 2 5 7 8 9 ) -> ( 3 2 5 7 8 9 )
  4. ( 3 2 5 7 8 9 ) -> ( 3 2 5 7 8 9 )
  5. ( 3 2 5 7 8 9 ) -> ( 3 2 5 7 8 9 )
Dördüncü Geçiş
  1. ( 3 2 5 7 8 9 ) -> ( 2 3 5 7 8 9 ) 3 ile 2'nin yerlerini değiştir.
  2. ( 2 3 5 7 8 9 ) -> ( 2 3 5 7 8 9 )
  3. ( 2 3 5 7 8 9 ) -> ( 2 3 5 7 8 9 )
  4. ( 2 3 5 7 8 9 ) -> ( 2 3 5 7 8 9 )
  5. ( 2 3 5 7 8 9 ) -> ( 2 3 5 7 8 9 )

PHP:
<?php
$Dizi = array(5, 7, 3, 8, 2, 9);
$Gecici = 0;
for($Dongu = 0; $Dongu < count($Dizi); $Dongu++)
{
    for($Sirala = 0; $Sirala < count($Dizi) - 1; $Sirala++)
    {
        if($Dizi[$Sirala] > $Dizi[$Sirala + 1])
        {
            $Gecici = $Dizi[$Sirala + 1];
            $Dizi[$Sirala + 1] = $Dizi[$Sirala];
            $Dizi[$Sirala] = $Gecici;
        }
    }
}
foreach($Dizi as $Sayilar) echo $Sayilar." ";
?>
 
Teşekkürler, sıralama algoritmalarından bahsettiğiniz için, Biraz da ben ekliyeyim. Bu algoritmanın en kötü çalışma analizi O(n^2)'dir. Yani 100.000 elemanı olan int array düşünürsek, yaklaşık 4-5 dk gibi bir zamanda sıralanmış diziyi oluşturur. Bir yandan, sıralanmış bir diziyi input olarak algoritmaya verirsek. En iyi çalışma performansı denir buna, o(n) zamanda yani 100.000 input için 1 sn altında hesaplayacaktır. En iyi durumun, bilgisayarı meşgul etmeyeceğini düşünüyorum.
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı