#include <cstdio>
#include <windows.h>
#include <cstdlib>
#include<vector>
#include<iostream>
#include<algorithm>
#include<ctime>
using namespace std;
#define MAX_SIZE 1000
#define N_TIMES 10000
int inline comp(const void*a, const void*b)
{
return *(int*)a - *(int*)b;
}
inline bool comp_sort(int a, int b)
{
return a < b;
}
int main(void)
{
vector<vector<int> > collect_qsort;
vector<vector<int> > collect_sort;
vector<int> temp(MAX_SIZE);
srand((unsigned)time(NULL));
for (int i = 0; i < MAX_SIZE; i++)
{
temp[i] = rand();
}
for (int i = 0; i < N_TIMES; i++)
{
collect_qsort.push_back(temp);
collect_sort.push_back(temp);
}
LARGE_INTEGER nFreq;
LARGE_INTEGER nBeginTime;
LARGE_INTEGER nEndTime;
double time;
QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&nBeginTime);
for(int i=0;i<N_TIMES;i++)
qsort(&collect_qsort[i][0], MAX_SIZE,sizeof(collect_qsort[i][0]),comp);
QueryPerformanceCounter(&nEndTime);
time = (double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;
printf("cost of Qsort time(%dint data*%d):%f\n", MAX_SIZE,N_TIMES,time);
QueryPerformanceFrequency(&nFreq);
QueryPerformanceCounter(&nBeginTime);
for (int i = 0; i<N_TIMES; i++)
sort(collect_sort[i].begin(), collect_sort[i].end(), comp_sort);
QueryPerformanceCounter(&nEndTime);
time = (double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;
printf("cost of sort time(%dint data*%d):%f\n", MAX_SIZE, N_TIMES, time);
system("Pause");
return 0;
}