请稍等 ...
×

采纳答案成功!

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

报错

https://img1.sycdn.imooc.com//szimg/5fe87c9009d41fa403050176.jpg

老师我这里注释掉assert能正常排序

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

{

clock_t startTime = clock();

sort(arr,l,n);

clock_t endTime = clock();

//assert(isSorted(arr,l,n));

cout << SortName <<":"<< double(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;

}

这里打开注释后就被中断了

https://img1.sycdn.imooc.com//szimg/5fe87ce50995088709190438.jpg

大概是什么原因,排序算法逻辑应该没有问题啊。没有用assert能正常排序是不是证明算法没有问题

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

1回答

liuyubobobo 2020-12-27 20:29:59

assert 就是为了检测是否排序正确。程序能运行不代表排序正确。我没有看到你打印排序的结果,请尝试在排序后打印排序结果,检查排序是否正确。

1 回复 有任何疑惑可以回复我~
  • 提问者 好嗨难 #1
    老师我第一幅图就是打印了arr1,然后selectionSort printArr。
    然后打印arr2 ,再进行insertionSort ,printArr2。
    insertionSort和selectionSort的结果一样啊,第一张图第四行,按照这个打印结果不是证明assert isSorted能通过啊,但是编译还是报这里错误,所以觉得很奇怪,找了半天找不到问题出在哪块
    回复 有任何疑惑可以回复我~ 2020-12-27 20:36:01
  • liuyubobobo 回复 提问者 好嗨难 #2
    我理解你的第一张图是打印的排序前的数组?我看一下你的 main 函数是什么样子。
    回复 有任何疑惑可以回复我~ 2020-12-27 20:37:53
  • liuyubobobo 回复 提问者 好嗨难 #3
    你的第二张图命令行写的很清楚,assertion failed,说明 issorted 返回了 false。也可以单步到 issorted 里跟踪一下,看是不是返回了 false。
    回复 有任何疑惑可以回复我~ 2020-12-27 20:39:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信