加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 合并排序问题

发布时间:2020-12-14 06:08:34 所属栏目:Java 来源:网络整理
导读:对于我的java作业,我正在努力编写一个递归合并排序类.截至目前,我有3个方法,一个“驱动”方法来启动递归,递归mergeSort方法和合并方法.根据我更改的变量,我的输出是一个全零的数组或我的原始数组以相同的顺序.唯一的问题是原始mergeSort方法必须接受一个数组

对于我的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读