Mergesort归并排序算法处理大数据集时排序结果乱序问题排查
归并排序错误修复说明
错误根因
你调用mergeSort方法时传参错误:mergeSort的第三个参数要求传入数组的最大下标,但你的代码中传入的是array4[array4.length-1],也就是数组最后一个元素的数值,而非下标。
比如当你排序100个元素的数组时,数组最大下标应为99,若数组最后一个元素值为100,你相当于给mergeSort传入了end=100,直接超出数组索引范围,导致末尾部分元素未被纳入排序逻辑,最终呈现前半部分有序、末尾乱序的现象。
修复方法
将main方法中调用归并排序的代码修改为:
mergeSort(array4, 0, array4.length - 1);
另外你注释掉的快速排序调用也存在相同的传参错误,如需启用也要同步修改为:
quickSort(array3, 0, array3.length - 1);
修改后即可正常完成全数组排序。
内容的提问来源于stack exchange,提问作者AlloNata
相关产品推荐
相关产品推荐

