[cpp]view
plaincopyprint?
- /*
- * =====================================================================================
- *
- * 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 ---------- */
文章出自:http://blog.youkuaiyun.com/fanwenbo/article/details/7935899