java – 合并排序问题

前端之家收集整理的这篇文章主要介绍了java – 合并排序问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

对于我的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))复杂度保持一致.

固定算法如下

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
原文链接:https://www.f2er.com/java/438343.html

猜你在找的Java相关文章