#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include <limits.h>
#include <iostream>
#define random(x) (rand()%x)
//返回中间值
int PartitionSort(int n[],int left,int right)
{
int first = left;
int key = n[left];
while (left < right)
{
if (n[left] <= key)
{
++left;
continue;
}
else if (n[right] >= key)
{
--right;
continue;
}
//n[left] > key && n[right] < key
//swap
int tmp = n[left];
n[left] = n[right];
n[right] = tmp;
++left;
--right;
}
n[first] = n[left];
n[left] = key;
return left;
}
void QuickSort(int n[], int left,int right)
{
if (left < right)
{
int center = PartitionSort(n, left, right);
QuickSort(n, center+1, right);
QuickSort(n, left, center-1);
}
}
int main(int argc, char *argv[])
{
//
const int kListLen = 100000;
int num_list[kListLen];
srand((int)time(0));
for (int i=0; i<kListLen; ++i)
{
num_list[i] = random(100);
}
time_t start_tm;
time_t end_tm;
time(&start_tm);
QuickSort(num_list, 0, kListLen-1);
time(&end_tm);
std::cout<<difftime(end_tm, start_tm)<<std::endl<<std::endl;
return 0;
}