Dörtlü Arama Algoritması

Dörtlü arama ikili arama mantığı ile çalışmaktadır. Aralık dört parçaya ayrılarak aranan sayı dizi içerisinde aranmaktadır. Dörtlü aramının recursive olarak kodlaması aşağıdadır.

NOT: Kodlama C dilinde yapılmıştır.


int dortluara(const int const *dizi, int bas, int son, const int aranan) 
{ 
 int first=bas, last=son, orta1, orta2, orta3;

 orta2 = (first+last)/2; 
 orta1 = (first+orta2)/2; 
 orta3 = (orta2+last)/2;

 if(aranan == dizi[first]) 
 return first+1; 
 if(aranan == dizi[orta1]) 
 return orta1+1; 
 if(aranan == dizi[orta2]) 
 return orta2+1; 
 if(aranan == dizi[orta3]) 
 return orta3+1; 
 if(aranan == dizi[last-1]) 
 return last;

 if(aranan > dizi[first] && aranan < dizi[orta1]) 
 {last = orta1;} 
 if(aranan > dizi[orta1] && aranan < dizi[orta2]) 
 {first = orta1; last = orta2;} 
 if(aranan > dizi[orta2] && aranan < dizi[orta3]) 
 {first = orta2; last = orta3;} 
 if(aranan > dizi[orta3] && aranan < dizi[last]) 
 {first = orta3;} 
 if(first+2 <= last){ 
 if(aranan > dizi[first] && aranan < dizi[orta1]) 
 return dortluara(dizi, first, last, aranan); 
 if(aranan > dizi[orta1] && aranan < dizi[orta2]) 
 return dortluara(dizi, first, last, aranan); 
 if(aranan > dizi[orta2] && aranan < dizi[orta3]) 
 return dortluara(dizi, first, last, aranan); 
 if(aranan > dizi[orta3] && aranan < dizi[last]) 
 return dortluara(dizi, first, last, aranan); 
 } 
 else 
 return -1;

}n>

Yorum Yapın

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d blogcu bunu beğendi: