二分查找离左边元素最近的(可以等于)
生活随笔
收集整理的這篇文章主要介紹了
二分查找离左边元素最近的(可以等于)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
int compare(const void *a,const void *b)
{return *(int *)a-*(int *)b;
}
//二分查找離元素(可以等于)
int bi_search(int num[10], int len, int target)
{
<span style="white-space:pre"> </span>int begin = 0;
<span style="white-space:pre"> </span>int end = len-1;<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>while(begin<end)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>int mid = (begin+end)/2;
<span style="white-space:pre"> </span>cout<<mid<<" "<<target<<endl;
<span style="white-space:pre"> </span>cout<<mid<<" "<<len-1<<endl;
<span style="white-space:pre"> </span>//最近的一個
<span style="white-space:pre"> </span>if(num[mid]==target)
<span style="white-space:pre"> </span>return mid;
<span style="white-space:pre"> </span>else if(num[mid]>target)
<span style="white-space:pre"> </span>end = mid-1;
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span>begin = mid+1;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>cout<<"begin:"<<begin<<"end:"<<end<<endl;
<span style="white-space:pre"> </span>return end;
}
void main()
{int num[10]={11,35,65,25,79,54,34,66,92,30};qsort(num,10,sizeof(int),compare);for(int i=0;i<10;i++)cout<<num[i]<<" ";cout<<endl;int index = bi_search(num, 10, 36);cout<<index<<endl;
}
轉載于:https://www.cnblogs.com/yan456jie/p/5369382.html
總結
以上是生活随笔為你收集整理的二分查找离左边元素最近的(可以等于)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring DI模式 小样例
- 下一篇: [数学最安逸][UVa1638改编][第