C’de rekürsif olarak yazılmış ikili arama algoritmasının programı…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include<stdio.h> #include<stdlib.h> #define size 10 int ikiliarama(int[], int, int, int); int main() { int boyut, i, aranan, pozisyon; int ilk, son, list[size]; printf("\nListe kac elemanli olacak: "); scanf("%d", &boyut); printf("\nListenin elemanlarini giriniz :"); for (i = 0; i < boyut; i++) { scanf("%d", &list[i]); } ilk = 0; son = boyut - 1; printf("\nAranan eleman : "); scanf("%d", &aranan); pozisyon = ikiliarama(list, aranan, ilk, son); if (pozisyon != -1) { printf("\nAranan eleman %d.siradadir", (pozisyon + 1)); } else printf("\n Aranan eleman listede yok"); return (0); } int ikiliarama(int a[], int x, int ilk, int son) { int orta; if (ilk > son) return -1; orta = (ilk + son) / 2; if (x == a[orta]) { return (orta); } else if (x < a[orta]) { ikiliarama(a, x, ilk, orta - 1); } else { ikiliarama(a, x, orta + 1, son); } } |