增加测试函数计算排序函数运行时间
2017-09-17 22:05
323 查看
要想比较两个函数的效率,最直观的方法莫过于比较两个排序函数排序同一个数组的时间,哪个函数花的时间更少,则该函数的运行效率相对较高,因此,我们需要在头文件中引入一个测试函数,能够较为直观的返回排序函数排序数组所花费的时间。
以下为具体的代码实现:
首先需要编写一个判断函数,用来判断数组是否已经排序完成,代码如下:
template<typename T>
bool issorted(T arr[],int n)
{
for(int i=0;i<n-1;i++)//注意i的范围最大只能取到i-2,防止数组越界,产生异常
{
if(arr[i]>arr[i+1]) return false;
}
return true;
}
接下来是正式的测试函数,用来测试排序函数所花费的时间,函数代码如下:
template<typename T>
void testsort(string sortname,void(*sortn)(T [],int),T arr[],int n)
{//传入一个数组的名字,排序数组的数字,待排序数组的指针以及数组的大小n
clock_t starttime=clock();//cloce_t为循环周期变量
sortn(arr,n);
clock_t endtime=clock();
assert(issorted(arr,n));//检测数组是否成功排序,防止计算错误的时间
cout<<sortname<<":"<<double(endtime-starttime)/CLOCKS_PER_SEC<<"s"<<endl;
//clock_t为循环周期个数,用其除以每个循环周期所花费的时间(CLOCK_PER_SEC),则得到时间
return;
}
测试10000个数据所花费的时间:
测试100000个数据所花费的时间
第一次测试10000个数据所花费的时间为0.139s,测试100000个数据所花费的时间为13.276s,因此我们不难发现,数据的量数增长到10倍,而所花费的时间却增长到100倍(13.276/0.139=100),因此该选择排序的算法复杂度为O(N2).
以下为具体的代码实现:
首先需要编写一个判断函数,用来判断数组是否已经排序完成,代码如下:
template<typename T>
bool issorted(T arr[],int n)
{
for(int i=0;i<n-1;i++)//注意i的范围最大只能取到i-2,防止数组越界,产生异常
{
if(arr[i]>arr[i+1]) return false;
}
return true;
}
接下来是正式的测试函数,用来测试排序函数所花费的时间,函数代码如下:
template<typename T>
void testsort(string sortname,void(*sortn)(T [],int),T arr[],int n)
{//传入一个数组的名字,排序数组的数字,待排序数组的指针以及数组的大小n
clock_t starttime=clock();//cloce_t为循环周期变量
sortn(arr,n);
clock_t endtime=clock();
assert(issorted(arr,n));//检测数组是否成功排序,防止计算错误的时间
cout<<sortname<<":"<<double(endtime-starttime)/CLOCKS_PER_SEC<<"s"<<endl;
//clock_t为循环周期个数,用其除以每个循环周期所花费的时间(CLOCK_PER_SEC),则得到时间
return;
}
测试10000个数据所花费的时间:
测试100000个数据所花费的时间
第一次测试10000个数据所花费的时间为0.139s,测试100000个数据所花费的时间为13.276s,因此我们不难发现,数据的量数增长到10倍,而所花费的时间却增长到100倍(13.276/0.139=100),因此该选择排序的算法复杂度为O(N2).
相关文章推荐
- 计算函数运行时间
- 计算程序运行的时间一个函数
- MATLAB中测试程序运行时间的函数
- oprofile 使用步骤 测试程序中各函数运行时间----步骤
- MATLAB中测试程序运行时间的函数
- opencv for python (7) 计算中值滤波函数程序的运行时间,及简要解释中值滤波函数
- python 计算函数运行时间
- Golang记录、计算函数执行耗时、运行时间的一个简单方法
- 函数运行时间计算
- 计算程序/函数运行时间
- Matlab函数运行时间的三种计算方法
- C计算函数运行时间
- Python计算函数的运行时间
- 【转】【VC】VC程序运行时间测试函数
- 使用console进行 性能测试 和 计算代码运行时间(转载)
- CCS 4.0 利用profile测试函数运行时间
- MATLAB中测试程序运行时间的函数
- 第十四周项目7-4-在7-3的基础上增加排序和看运行时间
- 计算一个Simulink模型运行时间的函数
- 一个测试运行时间的函数