排序,使用系统和自己的方法:
#include <stdlib.h>
#include <direct.h>
#include <string.h>
#include <time.h>
#include <iostream>
#include <fstream>
#include <vector>
#include<algorithm>
using namespace std;
#define LENGTH 100000
#define MAXPATH 260
int use_system_alg(int* arry)
{
clock_t start_time,end_time;
start_time = clock();
sort(arry, arry + LENGTH);
end_time = clock();
cout<<end_time - start_time<<endl;
return 0;
}
void qsort(int* arr, int low, int high)
{
if (low >= high)
return;
int i = low;
int j = high + 1;
int pivot = arr[i];
int temp;
while (i < j) {
for (i = i + 1; i < high; i++)
{
if (arr[i] >= pivot)
{
break;
}
}
for (j = j - 1; j > low; j--)
{ if (arr[j] <= pivot)
{
break;
}
}
if (i < j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[j];
arr[j] = arr[low];
arr[low] = temp;
qsort(arr, low, j - 1);
qsort(arr, i, high);
}
int use_my_alg(int* v_arry2)
{
clock_t start_time1,end_time1;
start_time1 = clock();
qsort(v_arry2, 0, LENGTH - 1);
end_time1 = clock();
cout<<end_time1 - start_time1<<endl;
return 0;
}
int main()
{
int* arry = (int*)calloc(1, LENGTH);
int* arry2 = (int*)calloc(1, LENGTH);
srand( (unsigned)time( NULL ) );
vector<int> v_arry2;
v_arry2.reserve(LENGTH);
for(int i = 0; i < LENGTH; i++)
{
v_arry2.push_back((int)(rand() * (LENGTH/(RAND_MAX + 1.0))) );
//cout<<v_arry2.at(i);
arry[i] = v_arry2.at(i);
arry2[i] = v_arry2.at(i);
}
use_system_alg(arry2);
for(int j = 1; j < LENGTH; j++)
{
if(arry2[j] < arry2[j - 1])
{
cout<<"system_alg error!"<<endl;
}
}
use_my_alg(arry);
for(int j = 1; j < LENGTH; j++)
{
if(arry[j] < arry[j - 1])
{
cout<<"my_alg error!"<<endl;
}
}
return 0;
}