binary search algorithm

来源:互联网 发布:淘宝宝贝数据包制作 编辑:程序博客网 时间:2024/05/17 23:44
[cpp]view plaincopyprint?
  1. /* 
  2.  * ===================================================================================== 
  3.  * 
  4.  *       Filename:  test.c 
  5.  * 
  6.  *    Description: Binary Search Algorithm  
  7.  * 
  8.  *        Version:  1.0 
  9.  *        Created:   
  10.  *       Revision:  none 
  11.  *       Compiler:  gcc 
  12.  * 
  13.  *         Author:    
  14.  *   Organization:   
  15.  * 
  16.  * ===================================================================================== 
  17.  */  
  18.   
  19. #include    <stdlib.h>  
  20.   
  21. /*  
  22.  * ===  FUNCTION  ====================================================================== 
  23.  *         Name:  main 
  24.  *  Description:   
  25.  * ===================================================================================== 
  26.  */  
  27. //  
  28. #include <stdio.h>  
  29. #include <time.h>  
  30. #include <limits.h>  
  31. int  
  32. binary_search (int array[], int length, int n )  
  33. {  
  34.     int position;  
  35.     int mid;  
  36.     int left=0, right = length;  
  37.   
  38.     mid = (left + right)/2;  
  39.     position = INT_MAX;  
  40.     while ( left <= right) {  
  41.   
  42.             if ( array[mid] > n) {  
  43.                 right = mid-1;  
  44.             }  
  45.             else if(array[mid] < n)  
  46.             {  
  47.                 left = mid+1;  
  48.             }  
  49.             else if(array[mid] == n)  
  50.             {  
  51.                 position = mid;  
  52.                 break;  
  53.             }else{  
  54.             }  
  55.             mid = (left + right)/2;  
  56. //          printf ( "%d %d %d %d\n",left,right,mid, n);  
  57.     }  
  58.     return position;  
  59. }       /* -----  end of function binary_search  ----- */  
  60. /*  
  61.  * ===  FUNCTION  ====================================================================== 
  62.  *         Name:  randomnumbergenerator 
  63.  *  Description:   
  64.  * ===================================================================================== 
  65.  */  
  66. int  
  67. random_number_generator (int min, int max)  
  68. {  
  69.     int n=0;  
  70.     if(min > max)  
  71. {  
  72.     printf ( "range error. Max: %d, Mix: %d\n", max, min );  
  73.     return 0;  
  74. }  
  75.     n = rand()%(max-min+1)+min;  
  76.     return n;  
  77. }       /* -----  end of function randomnumbergenerator  ----- */  
  78. int  
  79. main ( int argc, char *argv[] )  
  80. {  
  81.     int n;  
  82.     int array[10];  
  83.     int i;    
  84.     int ret;  
  85.     srand(time(NULL));  
  86.     for (i=0; i<sizeof(array)/sizeof(int); ++i ) {  
  87.         array[i] = i;  
  88.     }  
  89.     srand(time(NULL));  
  90.     for(i=0; i<10000; ++i)  
  91.     {  
  92.     n = random_number_generator(-10,10);  
  93.     {  
  94.     ret = binary_search(array, sizeof(array)/sizeof(int),n);  
  95.     if(ret == n)  
  96.     printf ( "find %d\n", n);  
  97.     else  
  98.     printf ( "can't find %d\n", n);  
  99. }  
  100.     }  
  101.     return EXIT_SUCCESS;  
  102. }               /* ----------  end of function main  ---------- */  
文章出自:http://blog.csdn.net/fanwenbo/article/details/7935899
0 0
原创粉丝点击