老师您好,我看了您的归并排序自底向上的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));