一、介绍
查找算法在实际编程中经常会使用,二分法查找速度较快,所以这里先列举二分法查找
使用前提,要查找的数据已经排好序
二、实现
#include <stdio.h>
int bin_find(int *buff, int len, int val)
{
int L,M,S;
L = len-1;
S = 0;
while(S <= L )
{
M = (L+S)/2;
printf("L %d M %d S %d buff %d val %d \n", L, M, S, buff[M], val);
if(buff[M] > val)
{
//更新L
L = M-1;
printf("val < buff[%d]\n",M);
}
else if(buff[M] < val)
{
//更新S
S = M +1;
printf("val > buff[%d]\n",M);
}
else
{
printf("找到数据:val = buff[%d]\n", M);
return M;
}
}
printf("没有找到数据\n");
return -1;
}
int bin_find_test()
{
int in[20],i,tmp = 0;
//产生输入数据
for(i = 0; i < 20; i++)
{
tmp += rand()%10;
in[i] = tmp;
printf("%d ", in[i]);
}
printf("\n");
bin_find(in, 20, 50);
bin_find(in, 20, 52);
}
int main()
{
bin_find_test();
while(1);
return 0;
}