#include <stdio.h>
#define SIZE 8
/**
 * Terry Harvey CIS 105 Section 010 TA Tina Weymouth
 *  Demonstration program for binary search.
 **/
void printArray(int data[], int size);

int main(){

    int data[] = {1,3,4,6,8,21,34,54};
    int key = 7;
    printArray(data, SIZE);
    printf("found %d at %d\n", key, binSearch(data, 0, SIZE - 1, key));
 
    return 0;
}

/* 
 * Returns the index of key in data OR returns -1 if key is not found.
 */
int binSearch(int data[], int start, int end, int key){
    int mid;

    if (start > end) return -1;

    mid = (end - start)/2 + start;
    if (key < data[mid])
        return binSearch(data, start, mid - 1, key);
    else if (key > data[mid])
        return binSearch(data, mid + 1, end, key);
    else //key == data[mid]
        return mid;
}

void printArray(int data[], int size){
    int i;
    for ( i = 0; i < size; i++)
        printf("%d ", data[i]);
    printf("\n");
    return;
}
