归并排序自底向上的Java版本代码疑似有误
来源:3-4 自底向上的归并排序算法
Richard0328
2017-11-25
老师您好,我看了您的归并排序自底向上的Java版本代码,运行以后,打印数组出来,发现打印出来的数组不是有序的,我怀疑是您的代码有问题,您有时间可以看一下吗?是经过优化的那里
// // Merge Sort Bottom Up 优化 // // 对于小数组, 使用插入排序优化 for (int i = 0; i < n; i += 16) InsertionSort.sort(arr, i, Math.min(i + 15, n - 1)); for (int sz = 16; sz < n; sz += sz) for (int i = 0; i < n - sz; i += sz + sz) // 对于arr[mid] <= arr[mid+1]的情况,不进行merge if (arr[i + sz - 1].compareTo(arr[i + sz]) > 0) merge(arr, i, i + sz - 1, Math.min(i + sz + sz - 1, n - 1));
写回答
1回答
-
liuyubobobo
2017-11-25
请确定你实验的代码和我github上的代码一致:https://github.com/liuyubobobo/Play-with-Algorithms/blob/master/03-Sorting-Advance/Course%20Code%20(Java)/04-Merge-Sort-Bottom-Up/src/bobo/algo/MergeSortBU.java
我刚才跑了10万组测试用例,没有问题。如果确认和我的代码一致的话,能否给我一组在我的代码下运行会出错误的测试用例?谢谢!
042018-02-26
相似问题