当前位置: 首页 > 面试题库 >

合并list1中的两个arraylist列表,同时保持排序

漆雕令秋
2023-03-14
问题内容

在我的作业中,第三步是调用方法merge来合并list1中的两个列表,以便list1 保持排序。

我编写了代码,但效果不佳,输出显示错误,因为排序很重要

 public static void merge (ArrayList<Integer> list1, ArrayList<Integer> list2)
 {
        int i;
        int n=list1.size();
        int pos , j=0;

        for (pos =0 ;pos<n ; pos++)
        {
            for ( i=0 ; i<n ; i++)
                if (list1.get(j)>list2.get(pos))
                    list1.add(pos,list2.get(pos));
                else 
                    j++;
       } 
 }

问题答案:

for假设两个列表都已排序,则只需要一个循环:

public static void merge(List<Integer> l1, List<Integer> l2) {
    for (int index1 = 0, index2 = 0; index2 < l2.size(); index1++) {
        if (index1 == l1.size() || l1.get(index1) > l2.get(index2)) {
            l1.add(index1, l2.get(index2++));
        }
    }
}

如果l2未排序,则需要两个循环:

public static void merge(List<Integer> l1, List<Integer> l2) {
    for (int index2 = 0; index2 < l2.size(); index2++) {
        for (int index1 = 0; ; index1++) {
            if (index1 == l1.size() || l1.get(index1) > l2.get(index2)) {
                l1.add(index1, l2.get(index2));
                break;
            }
        }
    }
}


 类似资料:
  • 以下是我在Leetcode上解决“合并两个排序列表”算法问题的代码: 我得到了一个运行时错误。但是我的代码有什么问题?

  • 问题内容: 说我有两个ArrayLists: 如果我这样做:Arrays.sort(num),那么我有: 有什么办法可以对num进行排序,也可以在名称中反映出来,以便最终得到: ?请帮帮我。我想到了比较器和对象,但几乎一无所知。 问题答案: 您应该以某种方式将字段和字段 关联 到一个类中,然后获得该特定类的实例列表。在此类中,提供一种检查数值的方法。如果您对实例进行排序,则名称字段也将按照您想要的

  • 问题内容: 我想将列表的内容添加在一起,创建以下列表: 是否有专门以这种方式合并列表的功能? 问题答案: 这有效: 上面解释了上面使用的所有内置函数。 另一个解决方案是使用列表推导。 根据您的口味,您可以执行以下操作: 或这个:

  • 我的情况是这样的:我有两个带有不同类型对象的arraylists。每个对象都有一个字段名和一个字段日期ArrayList事件、ArrayList事物。我按名称对arraylists进行排序,如果名称相同,则按日期进行排序。 假设ArrayList1具有以下对象:event1 01.12、event1 05.12、event2 04.03、event3 05.05 我如何迭代两个arraylists

  • rank ▲ ✰ vote url 65 357 50 683 url 合并两个列表 怎样合并两个列表? 例如: listone = [1,2,3] listtwo = [4,5,6] 我期待: mergedlist == [1, 2, 3, 4, 5, 6] 在Python中非常容易. mergedlist = listone + listtwo