归并排序递归问题
来源:3-2 归并排序法的实现
慕粉1330426222
2019-04-28
- (void)mergearr:(NSMutableArray*)array left:(int)left right:(int)right{
if (left >= right) {
return;
}
int center = (left + right)/2;
[self mergearr:array left:left right:center];
[self mergearr:array left:center+1 right:right];
[self megearrSort:array left:left center:center right:right];//合并
}
请问老师 [self megearrSort:array left:left center:center right:right];这句代码没有递归为什么会一直合并呢
写回答
1回答
-
liuyubobobo
2019-04-28
不是这句代码在一直合并,是mergearr这个递归函数在一值调用这个函数。所以mergearr在不断地被调用,megearrSort就在不断地被调用:)
对于一个小测试数据集,比如8个元素,你先思考一下,megearrSort会被调用几次?为什么?然后,再使用单步跟踪的方式,实际看一下,megearrSort被调用了几次?都是在什么时候被调用的?和你的设想一样不一样?如果不一样,哪里不一样?最初的设想,哪里有问题?
不要怕麻烦,进步就发生在这个过程中哦:)
及亚欧!:)
022019-04-28
相似问题