/*
* =====================================================================================
*
* 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 ---------- */
binary search algorithm
最新推荐文章于 2023-06-03 09:44:23 发布