|
发表于 2017-7-15 16:15:20
|
显示全部楼层
- typedef unsigned int UINT32;
- //折半查找法
- int BinSearch(int Buff[],UINT32 len,int num)
- {
- UINT32 mid,first = 0,last =len - 1 ;
- while(first<=last)
- {
- mid = (first+last)/2;
- if(Buff[mid] == num)
- {
- return mid;
- }
- else if(Buff[mid] < num)
- {
- first = mid+1;
- }
- else
- {
- last = mid-1;
- }
- }
-
- return -1;
- }
- //递归算法实现折半查找
- int BinSearch_2(int Buff[],int first,int last,int num)
- {
- int mid;
- if(first<=last)
- {
- mid = (first+last)/2;
- if(Buff[mid] == num)
- {
- return mid;
- }
- else if(Buff[mid] < num)
- {
- first = mid +1;
- return BinSearch_2(Buff,first,last,num);
- }
- else
- {
- last = mid - 1;
- return BinSearch_2(Buff,first,last,num);
- }
- }
- return -1;
- }
- //递归算法实现折半查找
- //但这个算法如果没有找到元素,则找到
- //example:1 2 2 3 查找2,返回2(下标从0开始)
- //example:1 1 1 3 查找2,也是返回2(下标从0开始)
- int BinSearch_3(int Buff[],UINT32 len,int num)
- {
- int start = 0,end = len-1,mid;
- while(start<=end)
- {
- mid = (start+end)/2;
- //偏右的情况
- /*if (num<Buff[mid])
- {
- end = mid-1;
- }
- else
- {
- start = mid+1;
- }*/
- if (Buff[mid]<num)
- {
- start = mid+1;
- }
- else
- {
- end = mid-1;
- }
- }
- return start;
- }
复制代码
|
|