Rehber PHP Kabarcık Sıralama Algoritması

  • Konuyu başlatan Umutmeister
  • Başlangıç Tarihi
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 zamanda yani 100.000 input için 1 sn altında hesaplayacaktır. En iyi durumun, bilgisayarı meşgul etmeyeceğini düşünüyorum.
 
Anlayabilene güzel algoritma teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…