1、测试代码
#include <stdio.h>
bool search(int *data, int len, int num)
{
int low = 0;
int high = 0;
int mid = 0;
high = len - 1;
while(low <= high)
{
mid = (high + low) / 2;
if(num < data[mid])
{
printf("=== high=%d low=%d mid=%d\n", high, low, mid);
high = mid - 1;
}
else if(num > data[mid])
{
printf(">>> high=%d low=%d mid=%d\n", high, low, mid);
low = mid + 1;
}
else
{
return true;
}
}
return false;
}
int main(void)
{
bool find;
int data[10] = {1,2,3,4,5,6,7,8,9,10};
int len = sizeof(data)/sizeof(data[0]);
find = search(data, len, 9);
if(true == find)
{
printf("Find 9 success.\n");
}
else
{
printf("Find 9 failure.\n");
}
find = search(data, len, 3);
if(true == find)
{
printf("Find 3 success.\n");
}
else
{
printf("Find 3 failure.\n");
}
return 0;
}
2、测试log
>>> high=9 low=0 mid=4
>>> high=9 low=5 mid=7
Find 9 success.
=== high=9 low=0 mid=4
>>> high=3 low=0 mid=1
Find 3 success.
3、算法分析