Java 什么';我修改的合并排序实现有什么问题?
我正在尝试编写一个修改的合并排序作为练习。但是我被困在为什么我的代码不起作用,我无法确定问题出在哪里?!任何提示或帮助都将不胜感激。提前谢谢 这是我的密码:Java 什么';我修改的合并排序实现有什么问题?,java,sorting,mergesort,Java,Sorting,Mergesort,我正在尝试编写一个修改的合并排序作为练习。但是我被困在为什么我的代码不起作用,我无法确定问题出在哪里?!任何提示或帮助都将不胜感激。提前谢谢 这是我的密码: public class MergeSort { public static void mergeSort(int[] list) { mergeSort(list, 0, list.length - 1); } private static void mergeSort(int[] list,
public class MergeSort {
public static void mergeSort(int[] list) {
mergeSort(list, 0, list.length - 1);
}
private static void mergeSort(int[] list, int low, int high) {
if (low < high) {
int middle = (high + low) / 2;
mergeSort(list, low, middle);
mergeSort(list, middle + 1, high);
int[] temp = merge(list, low, high);
System.arraycopy(temp, 0, list, low, high - low + 1);
}
}
private static int[] merge(int[] list, int low, int high) {
int low1 = low;
int high1 = high;
int mid = (low + high) / 2;
int end_low = mid;
int start_high = mid + 1;
while ((low <= end_low) && (start_high <= high1)) {
if (list[low] < list[start_high]) {
low++;
} else {
int temp = list[high - low + 1];
for (int k = start_high - 1; k >= low; k--) {
list[k + 1] = list[k];
}
list[low] = temp;
low++;
end_low++;
start_high++;
}
}
return list;
}
public static void main(String[] args) {
int[] list = { 2, 3, 2, 5, 6, 1, -2, 3, 14, 12, -5 };
mergeSort(list);
for (int i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
}
}
公共类合并排序{
公共静态无效合并排序(int[]列表){
mergeSort(list,0,list.length-1);
}
私有静态void合并排序(int[]列表,int低,int高){
如果(低<高){
int-middle=(高+低)/2;
合并排序(列表、低、中);
合并排序(列表,中间+1,高);
int[]温度=合并(列表、低、高);
系统阵列复制(温度,0,列表,低,高-低+1);
}
}
私有静态int[]合并(int[]列表,int低,int高){
int low1=低;
int high1=高;
int mid=(低+高)/2;
int end_低=中;
int start_high=mid+1;
while((low)“任何提示或帮助都将不胜感激。”。提示:使用调试器。在mergeSort方法上,您没有将merge方法返回的值分配给low和high变量。我没有运行代码,但这是引起我注意的第一件事。