对于我的java作业,我正在努力编写一个递归合并排序类.截至目前,我有3个方法,一个“驱动”方法来启动递归,递归mergeSort方法和合并方法.根据我更改的变量,我的输出是一个全零的数组或我的原始数组以相同的顺序.唯一的问题是原始mergeSort方法必须接受一个数组,并且merge方法不能返回任何内容.任何帮助都非常感激
import java.util.Arrays;
public class merge2 {
public static void main(String[] args){
int []a={22,45,1,4,89,7,0};
mergeSort(a);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(int [] a){
mergeSort(a,a.length-1);
}
public static void mergeSort(int []a,int beg,int end){
if(beg
最佳答案
好的我修复了你的解决方案你的主要问题是在线标有//< = here.当中间运行结束索引时,您没有从a到d分配值,因此它被填充为0.您必须将==替换为> =以克服此问题.
我还用索引修复了你的工作.您不必在每个级别上运行整个数组.你的复杂性也会受到这种影响.我认为它关于O(n ^ 2).仅运行在此递归级别上处理的数组的一部分就足以与O(nlog(n))复杂度保持一致.
我还用索引修复了你的工作.您不必在每个级别上运行整个数组.你的复杂性也会受到这种影响.我认为它关于O(n ^ 2).仅运行在此递归级别上处理的数组的一部分就足以与O(nlog(n))复杂度保持一致.
固定算法如下
public static void main(String[] args){
int []a={22,0};
mergeSort(a);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(int [] a){
mergeSort(a,a.length-1);
}
public static void mergeSort(int []a,int end){
if(beg