/* * ===================================================================================== * * Filename: test.c * * Description: Binary Search Algorithm * * Version: 1.0 * Created: * Revision: none * Compiler: gcc * * Author: * Organization: * * ===================================================================================== */ #include <stdlib.h> /* * === FUNCTION ====================================================================== * Name: main * Description: * ===================================================================================== */ // #include <stdio.h> #include <time.h> #include <limits.h> int binary_search (int array[], int length, int n ) { int position; int mid; int left=0, right = length; mid = (left + right)/2; position = INT_MAX; while ( left <= right) { if ( array[mid] > n) { right = mid-1; } else if(array[mid] < n) { left = mid+1; } else if(array[mid] == n) { position = mid; break; }else{ } mid = (left + right)/2; // printf ( "%d %d %d %d\n",left,right,mid, n); } return position; } /* ----- end of function binary_search ----- */ /* * === FUNCTION ====================================================================== * Name: randomnumbergenerator * Description: * ===================================================================================== */ int random_number_generator (int min, int max) { int n=0; if(min > max) { printf ( "range error. Max: %d, Mix: %d\n", max, min ); return 0; } n = rand()%(max-min+1)+min; return n; } /* ----- end of function randomnumbergenerator ----- */ int main ( int argc, char *argv[] ) { int n; int array[10]; int i; int ret; srand(time(NULL)); for (i=0; i<sizeof(array)/sizeof(int); ++i ) { array[i] = i; } srand(time(NULL)); for(i=0; i<10000; ++i) { n = random_number_generator(-10,10); { ret = binary_search(array, sizeof(array)/sizeof(int),n); if(ret == n) printf ( "find %d\n", n); else printf ( "can't find %d\n", n); } } return EXIT_SUCCESS; } /* ---------- end of function main ---------- */