手记

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

/
二分查找
作者: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

2人推荐
随时随地看视频
慕课网APP