#include <iostream> #include <ctime> #include <windows.h> using namespace std; int const N = 10; int a[N]; void CreatRandomArray(int a[]); void PrintArray(int a[]); void PrintQuick(int a[]); inline void Swap(int &s,int &t); void QuickSort(int a[],int left,int right); int Partition(int a[],int left,int right); void main() { double t,ave[10]; LARGE_INTEGER begin,end,clocks; QueryPerformanceFrequency(&clocks); //每秒多少个clock for (int i=0;i<10;i++){ CreatRandomArray(a); //PrintArray(a); QueryPerformanceCounter(&begin); //计时开始 QuickSort(a,0,N-1); QueryPerformanceCounter(&end); //计时结束 //PrintQuick(a); t = (end.QuadPart-begin.QuadPart+0.0)/clocks.QuadPart; ave[i] = t; //cout << endl << "Totle time:"<< t << "sec" << endl; } t = 0; for (int i=0;i<10;i++) t += ave[i]; t /= 10; cout << endl << "The average time:"<< t << "sec" << endl; } void CreatRandomArray(int a[]) { LARGE_INTEGER seed; QueryPerformanceCounter(&seed); srand(seed.QuadPart); for (int i=0;i<N;i++) a[i] = rand() % 10000; } void PrintArray(int a[]) { cout << "The Random array is" << endl; for (int i=0;i<N;i++) cout << a[i] <<" "; cout << endl << endl; } void PrintQuick(int a[]) { cout << "The sorted array is" << endl; for (int i=0;i<N;i++) cout << a[i] <<" "; cout << endl; } void QuickSort(int a[],int left,int right) { if(left<right) { int mid = Partition(a,left,right); QuickSort(a,left,mid-1); QuickSort(a,mid+1,right); } } int Partition(int a[],int left,int right) { int i = left,j = right + 1; while (true){ while ( (a[++i] < a[left]) & (i <= right) ); while ( (a[--j] > a[left]) & (j >= left) ); if ( i >= j ) break; Swap(a[i],a[j]); } Swap(a[left],a[j]); return j; } inline void Swap(int &s,int &t) { int temp = s; s = t; t = temp; }