r1[k++]=parray[i++]; } else
r1[k++]=parray[j++]; }
if (i<=m)
while (i<=m) {
r1[k++]=parray[i++]; movetimes[6]++; } else
while (j<=t) {
r1[k++]=parray[j++]; movetimes[6]++; } }
void Sort::MergePass(long int parray[], long int r1[], int h) //一趟归并 {
int i(1),k;
while (i<=Max-2*h+1) {
Merge(parray, r1, i, i+h-1, i+2*h-1); i+=2*h; }
if (i Merge(parray, r1, i, i+h-1, Max); else for (k=i; k<=Max; k++) { r1[k]=parray[k]; movetimes[6]++; } } /************************************************************获取当前时间**********************************************************************/ long double Sort::GetNowTime() { LARGE_INTEGER litmp; LONG64 QPart; QueryPerformanceCounter(&litmp); QPart=litmp.QuadPart; return (long double)QPart; } /**************************************************************打印数组************************************************************************/ void Sort::PrintArray(long int *pRandom) { for(int j=1;j<=Max;j++) cout< /************************************************************数组置零函数***********************************************************************/ void Sort::SetTimesZero() { memset(comparetimes,0,sizeof(int)*7); memset(movetimes,0,sizeof(int)*7); } void Sort::RecordTimes(int j) { for(int i=0;i<7;i++) { timestable[i][j]=movetimes[i]; timestable[i][j+1]=comparetimes[i]; } } /************************************************************输出排序数据***********************************************************************/ void Sort::PrintStatistics(char* funcname[]) { int i(0),j(0); cout<<\排序方法\\t\乱序耗时(μs) \顺序耗时(μs) \逆序耗时(μs)\ for(i=0;i<7;i++) cout< < cout<<'\\n'<<\移动次数统计表\\n\\n\ cout<<\ 排序方法\\t\ 乱序序列\\t\ 顺序序列\\t\ 逆序序列\\t\ for(i=0;i<7;i++) { cout< cout<<'\\t'<<'\\t'< cout<<'\\n'<<\比较次数统计表\\n\\n\ cout<<\ 排序方法\\t\ 乱序序列\\t\ 顺序序列\\t\ 逆序序列\\t\ for(i=0;i<7;i++) { cout< cout<<'\\t'<<'\\t'< /*************************************************************类的析构函数**********************************************************************/ Sort::~Sort() { delete pRandom1; delete pRandom2; }

