//测试 void Test(long array[], long length) { long array1[length], array2[length]; double start; double end; memcpy(array1, array, length * sizeof(long)); start = clock(); heapSort(array1, length); end = clock(); std::cout << "堆排序: " << (end - start)/CLOCKS_PER_SEC << "秒" << std::endl; memcpy(array2, array, length * sizeof(long)); start = clock(); JMSort(array2, length); end = clock(); std::cout << "臻排序: " << (end - start)/CLOCKS_PER_SEC << "秒" << std::endl; long i; for (i = 0; i < length; i++) { if (array2[i] != array1[i]) { printf("错误\n"); printfArray(array1, length); printfArray(array2, length); return; } } printf("通过\n"); }
//测试固定数组排序 void Test1() { long array[] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70}; long length = sizeof(array) / sizeof(long); printf("Test1:\n"); printfArray(array, length); Test(array, length); }
//测试空数组排序 void Test2() { long array[0]; long length = sizeof(array) / sizeof(long); printf("Test2:\n"); printfArray(array, length); Test(array, length); }
void printReturnData(ReturnData *rdata, UserData *udata) { printf("tsdata: "); printArray(tsdata, nt); printf("\n\nxdata\n"); for(int i = 0; i < nx; ++i) { for(int j = 0; j < nt; ++j) printf("%e\t", rdata->am_xdata[j + nt * i]); printf("\n"); } printf("\nydata\n"); for(int i = 0; i < ny; ++i) { for(int j = 0; j < nt; ++j) printf("%e\t", rdata->am_ydata[j + nt * i]); printf("\n"); } printf("\n\nxdotdata: "); for(int i = 0; i < nx; ++i) printf("%e\t", rdata->am_xdotdata[i]); printf("\njdata\n"); for(int i = 0; i < nx; ++i) { for(int j = 0; j < nx; ++j) printf("%e\t", rdata->am_Jdata[i + nx * j]); printf("\n"); } printf("\nnumsteps: \t\t"); printfArray(numstepsdata, nt, "%.0f "); printf("\nnumrhsevalsdata: \t"); printfArray(numrhsevalsdata, nt, "%.0f "); printf("\norder: \t\t"); printfArray(orderdata, nt, "%.0f "); printf("\n"); printf("llh: %e\n", *llhdata); }