新手用GetTickCount出错,请指教
目的是测出线性检索、二分检索的时间耗费情况,数组初始化用rand,请高手指教:
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<string>#include<iostream>#include<iomanip>#include<windows.h>#include<ctime>#define N 8000000using namespace std;int a[N+1];int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int ran_get_ele(){ int i=0,key=rand(); for(;i<N;i++){ //srand(time(0)); a[i]=rand(); } return key;}int linearSearch(int key){ DWORD take=GetTickCount(); for(int i=0;i<N;i++) if(a[i]==key){ cout<<"time consumed using linearySearch is "<<GetTickCount()-take<<endl; return i; } cout<<"time consumed using linearySearch is "<<GetTickCount()-take<<endl; return -1;}int binarySearch(int key){ DWORD take=GetTickCount(); int low=0,high=N-1,mid; while(low<=high){ mid=(low+high)/2; if(a[mid]==key){ cout<<"time consumed using binarySearch is "<<GetTickCount()-take<<endl; return mid; } key<a[mid] ? high=mid-1 : low=mid+1; } cout<<"time consumed using binarySearch is "<<GetTickCount()-take<<endl; return -1;}int main(){ int key,tag; key=ran_get_ele();//用rand函数获得数组a和key的值 tag=linearSearch(key); if(tag<0) cout<<"no such element!"<<endl; else cout<<tag<<endl;//若找到输出下标 qsort(a,N,sizeof(a[0]),cmp); tag=binarySearch(key); if(tag<0) cout<<"no such element!"<<endl; else cout<<tag<<endl;//若找到输出下标 return 0;}