vs2010环境下数字较大执行后停止工作?
来源:2-7 更多关于O(n^2)排序算法的思考
zjuPeco
2017-02-14
所有程序见:https://github.com/zjuPeco/Sorting/tree/master
测试了Selection Sort,Insertion Sort和Shell Sort,写的程序和老师给的几乎一模一样,n = 10000时正常执行,n = 100000的时候会出现下图的情况。
还有就是一直有这么一个警告在,也不知道和这个有没有关系,该怎么处理?
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2212) : see declaration of 'std::_Copy_impl'
1> e:\master me\c++\test_samples\algorithmonimooc_2_1\algorithmonimooc_2_1\sorttesthelper.h(70) : see reference to function template instantiation '_OutIt std::copy<int[],int*>(_InIt,_InIt,_OutIt)' being compiled
1> with
1> [
1> _OutIt=int *,
1> _InIt=int []
1> ]
1回答
-
尝试不要调用copy函数,而是手动做一次循环赋值。VS编译器认为copy函数不安全。
另外请确认你的代码没有越界等问题。看你的截图,Selection Sort和Insertion Sort都跑完了,有可能Shell Sort实现有问题。。。
在一般计算机上,O(n^2)的算法跑10万数据量,要等不少时间。。。但是Shell Sort不是O(n^2)级别的,对于完全随机的数据,应该比Selection Sort和Insertion Sort快很多。
112017-02-15
相似问题