【算法】测试C++标准库中sort算法在不同输入规模下的运行时间 并观察其变化趋势(C++源码)
一、分别计算输入数组
大小为n=100,1000,10000,100000,1000000,10000000时的平均运行时间;
二、根据不同规模的运行时间
判断sort()排序算法的运行趋势,判断时间复杂度是否为O(n²)。
三、源代码(C++)
#include "stdafx.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<ctime>
#include<iomanip>
#include<cstdlib>
using namespace std;
double sum=0;
void average_sort_time(int n)
{
cout<<double(sum)/100<<endl;
}
int main( )
{
int j=100;
int n = 1000;
for(int a=0 ; a<j ; a++)
{
//srand(time(NULL));
vector<int>vec(n);
for(int i = 0 ; i < n; i++)
{
vec[i] = rand() % 101 * 1000;
}
clock_t start_time = clock();
sort(vec.begin(),vec.end());
clock_t elpased_time = clock()-start_time;
cout<<fixed<<setprecision(6);
cout<<"Time elapsed:"<<double(elpased_time)/CLOCKS_PER_SEC<<"second."<<endl;
sum=sum+double(elpased_time)/CLOCKS_PER_SEC;
}
average_sort_time(n);
getchar();
return 0;
}