java - 将两个已排序的 Arraylist 合并为一个已排序的 Arraylist

标签 java sorting arraylist mergesort

我的代码应该将两个已排序的数组列表合并为一个已排序的数组列表,如果使用的数组列表之一未排序,则它应该返回 null。

public class MergeSorted {
public static void merge(ArrayList<Integer> a, ArrayList<Integer> b) {

    for (int i = 0, j = 0; j < b.size(); i++) {
        if (i == a.size() || a.get(i) > a.get(j)) {
            a.add(i, b.get(j++));
        }
    }
}  
}

这是我尝试过的,但如果它们不相等,我无法理解返回 null 的想法,我是 java 新手,这是我的第二周,所以请耐心等待。我知道我应该有一个 if 语句检查它们是否已排序,还有一个 else 但我应该在 if 中包含什么?

最佳答案

问题

检查两个列表是否已排序,如果已排序,则将两个列表合并为一个已排序列表,而如果列表未排序,则返回 null。

代码解决方案:

尝试以下代码:

public class MergeSorted {
public static List merge(List<Integer> aList, List<Integer> bList) {

    List mergeList = new ArrayList<Integer>();

    //checking if list 'A' is sorted
    List temp = new ArrayList(aList);
    Collections.sort(temp);
    boolean aSorted = temp.equals(aList);

    //checking if list 'B' is sorted
    temp = new ArrayList(bList);
    Collections.sort(temp);
    boolean bSorted = temp.equals(bList);

    //if both lists are sorted then merge them
    if(true == aSorted && true == bSorted) {
        mergeList.addAll(aList);
        mergeList.addAll(bList);
        Collections.sort(mergeList);
    }

   return mergeList; 
    }
  }

关于java - 将两个已排序的 Arraylist 合并为一个已排序的 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829093/

相关文章:

java - 微服务中的观察者模式

python - 在由多个元素组成的列表列表中查找项目

java - 耐心排序并找到最长的递增子序列

java - ArrayList 检查数据是否已经存在

java - 如何以编程方式在二维数组中插入值?

java - 为什么构造函数歧义仅适用于包装类

java - 如何抑制字段或局部变量的 FindBugs 警告?

python - 如何在 Django 管理的数据库中找到每个项目的最新行?

java - 在 HashMap 中的 String 的 ArrayList 中添加动态内容

java - 使用扩展接口(interface)参数实现方法