Bu algoritma en temel ve basit sıralama algoritmasıdır.Genel olarak verilen n adet değer icin n-1 adımda sıralama yapılır. Bu algoritmayı şu şekilde anlatabiliriz ;
Birinci adım : Bu adımda dizinin ilk elemanı dizinin diğer elemanları ile karşılaştırılır.İlk eleman karşılaştırıldığı eleman'dan kucukse dizideki bir sonraki elemana gecilir. Eğer dizideki eleman karşılaştırıldığı elemandan buyukse ilk eleman buyuk olduğu elemanın yerine eleman ise dizinin ilk sırasına yerleştirirlir.Bu işlem dizinin son elemanınana kadar devam eder.Daha sonra ikinci adıma gecilir.
İkinci adım : Bu adımda dizinin ikinci elemanı dizinin diğer elemanları ile karşılaştırılır.İkinci eleman karşılaştırıldığı eleman'dan kucukse dizideki bir sonraki elemana gecilir. Eğer dizideki eleman karşılaştırıldığı elemandan buyukse ikinci eleman buyuk olduğu elemanın yerine eleman ise dizinin ikinci sırasına yerleştirirlir.Bu işlem dizinin son elemanınana kadar devam eder.Daha sonra ucuncu adıma gecilir.
...
...
n-1 adım : Bu adımda ise dizinin n-1 inci sıradaki elemanı ile dizinin n ci elemanı karşılaştırılır.Eğer n. eleman'dan buyukse yer değiştirirler.Yoksa işlem sona erer.

Gorulduğu gibi n adet değer icin n-1 adımda bir sıralama yapılıyor. Karşılaştırma sayısını bulmak istersek ;

1. adımda n-1 adet karşılaştırma yaptık.
2. adımda n-2 adet karşılaştırma yaptık.
3. adımda n-3 adet karşılaştırma yaptık.
....
....
n-2. adımda 2 karşılaştırma yaptık.
n-1. adımda 1 karşılaştırma yaptık.

Yani toplam karşılaştırma sayımız (n-1)[n-2)[n-3]....+3+2+1 dir. n adet veriyi sıralamak icin yapılan toplam karşılaştırma suresi o halde n*(n-1)/2 'dir. Ornek algoritmanın programını şu şekilde verebilriz ;


For i = 1 To p - 1
For j = i + 1 To p
If dizi(i) > dizi(j) Then
t = dizi(i)
dizi(i) = dizi(j)
dizi(j) = t
End If
Next j
Next i


Aşağıdaki ornek program ise Visual Basic'de bu algoritmanın uygulanmasını gostermektedir.
Formun general declarations kısmına aşagıdaki değerleri giriniz.Bunlar programda kullanacağımız degişkenlerdir.


Kod :

Option Base 1
Dim dizi
Dim i, j, t, p As Integer

Daha sonra form uzerine iki tane buton yerleştiriniz. Bunlardan birincisinin adını Dizi ikincisinin adını ise Sırala olarak değiştirin.Birinci butonun click event'ine aşağıdaki kodu giriniz.

Kod :

Private Sub Command1_Click()
'dizi gir
p = Val(InputBox("dizinin boyutunu giriniz"))
ReDim dizi(p)
For j = 1 To p
dizi(j) = Val(InputBox("Dizinin " & j & " elemanını giriniz", "Eleman"))
Next j
End Sub

İkinci butonun click event'ine ise aşağıdaki satırları yazınız.

Kod :

Private Sub Command2_Click()
Print "Dizinin onceki hali"
For i = 1 To p
Print dizi(i); "-";
Next i
For i = 1 To p - 1
For j = i + 1 To p
If dizi(i) > dizi(j) Then
t = dizi(i)
dizi(i) = dizi(j)
dizi(j) = t
End If
Next j
Next i
Print
Print "Dizinin sıralanmış hali"
For i = 1 To p
Print dizi(i); "-";
Next i
End Sub
__________________