采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
int i = l, j = mid+1;
for( int k = l ; k <= r; k ++ ){
if( i > mid ) { arr[k] = aux[j-l]; j ++;}
else if( j > r ){ arr[k] = aux[i-l]; i ++;}
else if( aux[i-l] < aux[j-l] ){ arr[k] = aux[i-l]; i ++;}
else { arr[k] = aux[j-l]; j ++;}
}
因为mergeSort是对数组[l...r]这个区间进行归并操作。我们使用了一个临时的数组aux。而这个临时数组aux我们只开辟了r-l+1这么多的空间,索引是从0开始的。换句话说,aux[0...r-l+1]对应了arr[l...r],他们之间存在一个l的偏移,所以我们在处理的时候就要考虑这个偏移啦。
非常感谢!
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
9.5k 21
6.1k 3
5.6k 5
1.8k 18
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号