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