代码实验

来源:3-6 随机化快速排序法

CHlewN

2016-12-09

为什么我在电脑上代码试验时,使用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;
    }


写回答

2回答

liuyubobobo

2016-12-10

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


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


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

0
5
liuyubobobo
回复
CHlewN
现代计算机普遍情况(配置不要特别极端的差。。。)存储100万的数据量是毫无压力的。归并排序执行100万的数据量也应该是毫无压力的。我依然倾向于认为是你的实现代码的问题。很多同学都表示自己的代码没有问题,但是通常其实都无意中犯了小错误。建议:1)将你的代码换一台机子运行,看看是不是还有问题?2)直接复制官方代码。如果你使用的是VS,可能在一些小地方需要做一些调整。比如这个问题的描述:http://coding.imooc.com/learn/questiondetail/3044.html 看看是不是还有问题? 如果还有这些问题,请微信联系我一下:liuyubobobo 请注明:算法
2016-12-10
共5条回复

CHlewN

提问者

2016-12-10

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

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程