close

binary search 折半查找

#include<stdlib.h>
#include<stdio.h>
#define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
int numarray[] = {123, 145, 512, 627, 800, 933};
int numeric (const int *p1, const int *p2){
    return(*p1 - *p2);
}

int lookup(int key){
    int *itemptr;
    /* The cast of (int(*)(const void *,const void*))
       is needed to avoid a type mismatch error at
       compile time */
    itemptr = (int *)bsearch (&key, numarray, NELEMS(numarray),
            sizeof(int), (int(*)(const void *,const void *))numeric);
    return (itemptr != NULL);
}


int main(void){
    if (lookup(512)){
        printf("512 is in the table.\n");
    }
    else{
        printf("512 isn't in the table.\n");
    }
    return 0;
}
arrow
arrow
    全站熱搜

    peicheng 發表在 痞客邦 留言(0) 人氣()