|
Klasik sıralama(sorting) algoritmaları - 1 |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bu makalemizde en
temel ve en basit sıralama algoritmalarından Insertion Sort, Selection Sort ve
Shell Sort algoritmalarını öğreneceğiz. Bildiğiniz gibi bilgisayar sistemlerinin ve
programlama tarihinin en başından beri sıralama algoritmaları her zaman önemli olmuştur.
Bir çok önemli algoritmada sıralama algoritmaları kullanılır. Peki bilgisayar
sıralama işlemini nasıl yapar. Mesela bir insana verilen üzerinde harfler
bulunan karışık kartların sıralamasını istediğimizde önce rastgele bir kart
alır.Sonra bir kart daha alır, sonra aldığı kartı ile ilk aldığı kartı karşılaştırır
ve kartı uygun yere koyar. Bütün kartları bu şekilde yaptıktan sonra
sıralama işlemi tamamlanır. Bilgisayar sistemleride genelde sıralama yaparken insanların
yaptığı gibi karşılaştırma yapar. Bu makalede göreceğimiz algoritmalar genelde
yavaş çalışan algoritmalardır.Bunların yanında Merge Sort, Quick Sort ve
Heap Sort gibi diğer hızlı algoritmalar da vardır. Ancak bazı hızlı algoritmaların
da başka dezavantajları vardır. Bir başka makalede bu hızlı algoritmaların üzerinde
duracağız. Şimdi ilk algoritmamız olan Insertion Sort algoritmasına bakalım.
Insertion
Sort(sıralama)
Bu algoritma insanların
sıralama mantığına en yakın olan algoritmadır. Sıralanacak dizi sıralanmış ve
sıralanmamış parçalara ayrılarak her bir eleman sıralanmış parça içinden kontrol
edilerek uygun yere yerleştirilir. Grafiksel olarak Insertion algoritmasını
aşağıdaki aşamalar şeklinde ifade edebiliriz.
Insertion Sort algoritması
aşağıdaki gibidir. N sıralanacak dizinin eleman sayısını, ilk parametre ise
sıralanacak dizinin adresini gösteriyor.
void InsertionSort(int *Dizi, int N){
int i, j,m ;
for (i=1 ; i < N ; ++i){
if (dizi[i]
< dizi[i-1]){
m=
dizi[i];
for(j=i
; j && m < dizi[j-1] ; j--)
dizi[j]
= dizi[j-1];
dizi[j]
= m;
}
}
}
Selection
Sort(sıralama)
Bu algoritma birinci
elemandan başlayarak son elemana kadar sıralanmış parçayı artırarak işler. Önce
dizideki en küçük eleman bulunur ve dizinin ilk elemanı ile yer değiştirilir.
Sonraki aşamada sıralanmamış parça içindeki en küçük eleman bulunur ve ikinci
elemanla yer değiştirilir. Bu işlemi N defa N eleman için yaptığımızda dizi
sıralanmış olacaktır.Grafiksel olarak Selection Sort algoritmasını aşağıdaki
aşamalar şeklinde ifade edebiliriz.
Selection Sort algoritması
aşağıdaki gibidir. N sıralanacak dizinin eleman sayısını, ilk parametre ise sıralanacak
dizinin adresini gösteriyor.
void
SelectionSort(int *Dizi, int N){
int i, j,min ;
for (i=0 ; i < N ; i++){
min
= i ;
for(j
= i+1 ; j < N ; j++){
if
(dizi[i] < dizi[min])
min=j;
}
değiştir(dizi[i]
, dizi[min]); // i. ve min. elemanı yer değiştirecek fonksiyon.Bunu yazmayı
da size bırakıyorum.
}
}
Shell
Sort(sıralama)
Shell sort algoritması
Insertion algoritmasına benzer ancak bu algoritma daha hızlıdır.Çünkü sıralama
işlemini bütün dizi üzerinde değilde diziyi guruplara bölerek yapar.Insertion
sort metodunu dizinin belli bölümlerine uyguladığımızda Shell sort algoritmasını
elde ederiz.Grafiksel olarak Shell Sort algoritmasını aşağıdaki aşamalar şeklinde
ifade edebiliriz.
Shell Sort algoritması
aşağıdaki gibidir. N sıralanacak dizinin eleman sayısını, ilk parametre ise
sıralanacak dizinin adresini gösteriyor.
void
ShellSort(int * dizi , int N)
{
int i,j,h,temp;
for(h=1 ; h <= N/9 ; h=3*h+1)
;
while(h){
for(i=h ; i<N ; i +=1){
temp=dizi[i];
for(j=i ; j > h-1 &&
temp < dizi[j-h] ; j -= h)
dizi[j]=dizi[j-h];
dizi[j]=temp;
}
h /=3;
}
}
Daha
sonraki yazılarımızda diğer önemli sıralama algoritmalarını göreceğiz.
Makale:
Klasik sıralama(sorting) algoritmaları - 1 C ve Sistem Programlama Sefer Algan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|