• 28 Eylül 2020 02:39

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

Dörtlü Arama Algoritması

BySait ORHAN

Eyl 11, 2011

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;
 
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.