请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

代码实验

为什么我在电脑上代码试验时,使用testSort函数会什么也不显示

#include <iostream>
#include "SortTestHelper.h"
#include "MergeSort.h"
#include "SelectionSort.h"
using namespace std;

int main()
{
	int n = 600000;
	int *arr = SortTestHelper::generateRandomArray(n,10,20090);
	//mergeSort(arr, 10000);
	SortTestHelper::testSort("mergeSort", mergeSort, arr, n);
	//SortTestHelper::testSort("selectionSort", selectionSort, arr, n);
	//SortTestHelper::printArray(arr, 100);
	delete []arr;
	return 0;
}

将n改小一点就会有显示mergesort使用的时间

void testSort(const string &sortName, void (*sort)(T[], int), T arr[], int n) {

        T *brr = copyArray(arr, n);
		clock_t startTime = clock();
        sort(brr, n);
        clock_t endTime = clock();
        //cout << sortName << " : " <<  << " s"<<endl;
		cout<<sortName<<": ";
		printf("%.10lf s\n",double(endTime - startTime) / CLOCKS_PER_SEC);
        assert(isSorted(brr, n));
        delete []brr;

        return;
    }


正在回答 回答被采纳积分+3

2回答

liuyubobobo 2016-12-10 06:12:25

n很小的时候testSort可以显示时间;将n变大testSort什么都不显示。是不是将n变大,testSort一直在运行,没有运行完?如果是这样的话,会不会是自己实现的mergeSort有问题?其实实现的时间复杂度并非是O(nlogn)的?


你需要调试一下,看看到底问题的根源是什么。可以参考一下课程的官方代码实验一下哦:)


https://github.com/liuyubobobo/Play-with-Algorithms

0 回复 有任何疑惑可以回复我~
  • 提问者 CHlewN #1
    不是一直运行,是直接什么都不显示就退出程序了
    回复 有任何疑惑可以回复我~ 2016-12-10 09:37:53
  • liuyubobobo 回复 提问者 CHlewN #2
    和这个课程的官方代码比较一下,看看哪里有问题?
    回复 有任何疑惑可以回复我~ 2016-12-10 11:27:58
  • 提问者 CHlewN 回复 liuyubobobo #3
    我后来用官方代码直接测试也是这个问题,n超过600000就不能打印出结果了
    回复 有任何疑惑可以回复我~ 2016-12-10 12:08:15
提问者 CHlewN 2016-12-10 14:41:35

用老师你github上的源代码又试了一次,也是同样的问题,我用的是dev-c++

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信