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

在我的作业中,第三步是调用方法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;

}

}

}

}

以上是 合并list1中的两个arraylist列表,同时保持排序 的全部内容, 来源链接: utcz.com/qa/410225.html

回到顶部