• 21 Aralık 2024 17:01

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 yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.