继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

C/C++算法 (二分查找)

纸女神
关注TA
已关注
手记 13
粉丝 141
获赞 112

/
二分查找
作者:Zhihang
(附:这是俺滴原创,盗用请看本程序最底下)
/

include<iostream>
include<algorithm>

using namespace std;

int erfen(int array[],int n,int ans){
sort(array,array+n);
int left=0;
int right=n-1;
while(left<=right){
int mix=left+(right-left)/2;
if(ans==array[mix])
return mix;

    if(ans<array[mix])            
        right=mix-1;

    else if(ans>array[mix])
        left=mix+1;
}

return -1;

}

int randomArray(int n,int left,int right){
assert(left<=right);
int
array=new int[n];
srand(time(NULL));
for(int i=0;i<n;i++){
array[i]=rand()%(right-left+1)+left;
}
return array;
}

int* testerfen(string name,int array[],int n,int left,int right){
int zhao=rand()%(right-left+1)+left;
int clock_start=clock();
erfen(array,n,zhao);
int clock_end=clock();
cout<<name<<": "<<double(clock_end-clock_start)/CLOCKS_PER_SEC<<endl;
}

int main(){
const int n=10000000;
int *array=randomArray(n,1,n);

testerfen("二分查找",array,n,1,n);

return 0;

}

//先Ctrl+A 再Ctrl+C 最后Ctrl+V

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP