c++ 生成随机数、计算运行时间
2013-04-11 23:58
363 查看
一、计算运行时间
在c++中,可添加<ctime>头文件来计算运行时间,一种简单的方法是定义两个数,如int start=clock(),int end=clock() ,则运行时间为t=end-start,可直接输出,如cout<<end-start, 注意显示的时间为毫秒。
二、生成随机数
在c++中,一般用rand()来生成随机数,可以这样写
不过这样生成的是伪随机数,因为每次运行的结果都一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。如果想要生成真正的随机数,则要对strand()进行设置,可以把系统时间设为随机数种子, srand( (unsigned)time( NULL ) ),这样srand()函数就产生一个以当前时间开始的随机种子,不过时间间隔要超过1秒。
一个完整的程序,题目如下:
定义一个足够大的整型数组,并任意选择三种不同的排序算法对数组中的数据进行排序(按从小到大的顺序排序),记录每种算法的实际耗时,并结合数据结构中的知识对算法的时间复杂度分析进行说明。实验数据分两种情况进行比较:
1、数组中的数据随机生成;
2、数组中的数据已经是非递减有序。
这里运用到了随机数和运行时间
在c++中,可添加<ctime>头文件来计算运行时间,一种简单的方法是定义两个数,如int start=clock(),int end=clock() ,则运行时间为t=end-start,可直接输出,如cout<<end-start, 注意显示的时间为毫秒。
二、生成随机数
在c++中,一般用rand()来生成随机数,可以这样写
#include<iostream> using namespace std; int main() { int a[100]; int i; for(i=0;i<10;i++) a[i]=rand(); for(i=0;i<10;i++) cout<<a[i]<<endl; return 0; }
不过这样生成的是伪随机数,因为每次运行的结果都一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。如果想要生成真正的随机数,则要对strand()进行设置,可以把系统时间设为随机数种子, srand( (unsigned)time( NULL ) ),这样srand()函数就产生一个以当前时间开始的随机种子,不过时间间隔要超过1秒。
#include<iostream> #include<ctime> using namespace std; int main() { int a[100]; int i; srand( (unsigned)time( NULL ) ); for(i=0;i<10;i++) a[i]=rand(); for(i=0;i<10;i++) cout<<a[i]<<endl; return 0; }
一个完整的程序,题目如下:
定义一个足够大的整型数组,并任意选择三种不同的排序算法对数组中的数据进行排序(按从小到大的顺序排序),记录每种算法的实际耗时,并结合数据结构中的知识对算法的时间复杂度分析进行说明。实验数据分两种情况进行比较:
1、数组中的数据随机生成;
2、数组中的数据已经是非递减有序。
这里运用到了随机数和运行时间
#include<iostream> #include<ctime> using namespace std; const int MAX=10000000; int n; void bubble_sort(int a[]) { int i,j; int flag=1; while(flag) { flag=0; for(i=0;i<n-2;i++) { for(j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1; } } } } } void insertion_sort(int b[]) { int i,j,key; for(j=1;j<n;j++) { key=b[j]; i=j-1; while(i>=0&&b[i]>key) { b[i+1]=b[i]; i--; } b[i+1]=key; } } void merge(int A[],int p,int q,int r) { int i,j,k; int n1=q-p+1; int n2=r-q; int *L; L=new int[n1+2]; int *R; R=new int[n2+2]; for(i=1;i<=n1;i++) L[i]=A[p+i-1]; for(j=1;j<=n2;j++) R[j]=A[q+j]; L[n1+1]=MAX; R[n2+1]=MAX; i=j=1; for(k=p;k<=r;k++) { if(L[i]<=R[j]) { A[k]=L[i]; i++; } else { A[k]=R[j]; j++; } } delete []L; delete []R; } void merge_sort(int A[],int p,int r) { if(p<r) { int q=(p+r)/2; merge_sort(A,p,q); merge_sort(A,q+1,r); merge(A,p,q,r); } } int main() { cout<<"数据规模为:"; while(cin>>n&&n) { srand((unsigned int)time(NULL)); int flag=1; int *a=new int ; int *b=new int ; int *c=new int ; for(int i=0;i<n;i++) a[i]=b[i]=c[i]=rand(); /* cout<<"*****************************************************************"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; for(i=0;i<n;i++) cout<<b[i]<<" "; cout<<endl; for(i=0;i<n;i++) cout<<c[i]<<" "; cout<<endl; cout<<"*****************************************************************"<<endl; */ int start1_1=clock(); bubble_sort(a); int end1_1=clock(); int start1_2=clock(); bubble_sort(a); int end1_2=clock(); int start2_1=clock(); insertion_sort(b); int end2_1=clock(); int start2_2=clock(); insertion_sort(b); int end2_2=clock(); int start3_1=clock(); merge_sort(c,0,n-1); int end3_1=clock(); int start3_2=clock(); merge_sort(c,0,n-1); int end3_2=clock(); /* cout<<"*****************************************************************"<<endl; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; for(i=0;i<n;i++) cout<<b[i]<<" "; cout<<endl; for(i=0;i<n;i++) cout<<c[i]<<" "; cout<<endl; cout<<"*****************************************************************"<<endl; */ cout<<" 随机生成 非递减有序"<<endl; cout<<"冒泡排序用时: "<<(double)(end1_1-start1_1)<<"ms"; cout<<" "<<(double)(end1_2-start1_2)<<"ms"<<endl; cout<<"插入排序用时: "<<(double)(end2_1-start2_1)<<"ms"; cout<<" "<<(double)(end2_2-start2_2)<<"ms"<<endl; cout<<"归并排序用时: "<<(double)(end3_1-start3_1)<<"ms"; cout<<" "<<(double)(end3_2-start3_2)<<"ms"<<endl; cout<<endl<<"数据规模为:"; } return 0; }
相关文章推荐
- C++计算运行时间和随机数的插入排序
- JAVA/C/C++获取当前系统毫秒时间+计算程序运行时间
- C语言/c++中可以计算运行时间的函数clock( )
- C++中计算程序的运行时间
- <C++>计算程序运行时间
- 计算C++程序运行时间总结
- C/C++中计算程序运行时间
- 计算程序的运行时间(C++) .
- C/C++中计算程序运行时间
- C++计算程序运行时间
- c++计算程序运行时间
- C/C++中计算程序运行时间
- C++计算程序运行时间
- C++程序运行时间计算
- C++计算代码运行时间
- C/C++中如何计算程序运行的时间
- C++高精度实现计算程序运行时间
- c++ 计算程序运行时间
- c++ 计算程序运行时间
- C++获取当前时间和计算程序运行时间的方法