算法: C语言实现笔记
#include "stdafx.h"
#include <STDIO.H>
int search(int a[], int v, int l, int r)
{
while (r >= l)
{
int m = (l+r)/2;
if(v == a[m])
return m;
if(v < a[m]) //如果要查的数小于中间数,right就缩小啦,否则。。。
r = m-1;//因为m肯定少于r,所以这操作减少r的值,因为m原本就是一半,所以缩小到m-1(自己不用计算了)。
else
l = m+1;//增加l的值,同上。
}
return -1;
}
int main(int argc, char* argv[])
{
int num[] = {1,2,3,4,5,6,7,8,9,10};//数组必须是有序,必然。。。
int ret = search(num, 1, 0, 8);
printf("%d\n", ret);
return 0;
}
注释得很清楚了吧,经典算法,没啥好说的,理解不了就参考下。
其实我不知道int v 的 v 到底代表的英文是什么。。。