Skip to content

Instantly share code, notes, and snippets.

@Cubik65536
Created April 10, 2024 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cubik65536/9592f0e2180b17725527c45f43cb1f4a to your computer and use it in GitHub Desktop.
Save Cubik65536/9592f0e2180b17725527c45f43cb1f4a to your computer and use it in GitHub Desktop.
Merging in Java
import java.util.ArrayList;
import java.util.Collections;
public class Main {
/**
* 合并两个有序数组
* @param list1 第一个有序数组
* @param list2 第二个有序数组
* @return 合并后的有序数组
*/
private static ArrayList<Integer> merge(ArrayList<Integer> list1, ArrayList<Integer> list2) {
ArrayList<Integer> merged = new ArrayList<>(); // 合并后的数组
int i = 0, j = 0; // 两个数组的索引
while (i < list1.size() && j < list2.size()) { // 两个数组都还有元素
if (list1.get(i) <= list2.get(j)) { // 如果第一个数组的元素更小(或相等)
merged.add(list1.get(i)); // 将第一个数组的元素加入合并后的数组
i++; // 第一个数组的索引加一
} else { // 否则(第二个数组的元素更小)
merged.add(list2.get(j)); // 将第二个数组的元素加入合并后的数组
j++; // 第二个数组的索引加一
}
}
while (i < list1.size()) { // (只有)第一个数组还有元素
merged.add(list1.get(i)); // 将第一个数组的元素加入合并后的数组
i++; // 第一个数组的索引加一
}
while (j < list2.size()) { // (只有)第二个数组还有元素
merged.add(list2.get(j)); // 将第二个数组的元素加入合并后的数组
j++; // 第二个数组的索引加一
}
return merged; // 返回合并后的数组
}
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(5);
list1.add(8);
list1.add(13);
list1.add(21);
list1.add(55);
list1.add(77);
list1.add(89);
list1.add(101);
list1.add(201);
list1.add(256);
list1.add(780);
list1.add(1024);
list1.add(65536);
ArrayList<Integer> list2 = new ArrayList<>();
list2.add(-10);
list2.add(54);
list2.add(-18);
list2.add(-32);
list2.add(32);
list2.add(384);
list2.add(44);
list2.add(44);
list2.add(16);
list2.add(1);
list2.add(5);
list2.add(80);
list2.add(-32);
list2.add(0);
list2.add(48);
list2.add(384);
Collections.sort(list2);
System.out.println("List 1:");
System.out.println(list1);
System.out.println("List 2:");
System.out.println(list2);
ArrayList<Integer> merged = merge(list1, list2);
System.out.println("Merged:");
System.out.println(merged);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment