Created
April 10, 2024 20:09
-
-
Save Cubik65536/9592f0e2180b17725527c45f43cb1f4a to your computer and use it in GitHub Desktop.
Merging in Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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