二分探索

#include<stdio.h>

#define N 10
int s[N] = {1, 3, 4, 8, 13, 14, 18, 20, 21, 25};

void print_data(void);
int binary_search(int);

int main(void){
    int x;
    int i;
    x = ;
    print_data();

    i = binary_search(x);

    if(i == -1) {
        printf("The element %d is not in s\n", x);
    } else {
        printf("%d is found in s[%d]\n", x,i);
    }

    return 0;
}
void print_data(void) {
    int i;

    for (i = 0; i < N ; i++) {
        printf("s[%d] = %d \n", i, s[i]);
    }
}
int binary_search(int key) {

    int low = 0 ;
    int high = N - 1;
    int mid;
    while (low 
 high) {
        mid = (low + high) /2;
        printf("low = %2d, high = %2d, mid = %2d \n", low, high, mid);
        if (s[mid] == key ) {
            return (mid);
        }
        if (s[mid] > key) {
            high = mid - 1;
        } else {
            low = mid + 1 ;
        }
    }

    return -1;
}




実行結果