In one of my programs I am having trouble merging the two different lists and put it into an array and sorted from least to greatest. One of the teacher assistants said I can hard code it in to make it easier or do it the better way, the hard way of doing it. I want to do it the better way so I can think/become better of coding in. The TAs said it was doable in one for loop. Been thinking and trying for about 5 hours now and give up. Any suggestions?
import java.util.Scanner;
public class Lab10Part1 {
public static void main(String[] args) {
int[] list1, list2;
Scanner input = new Scanner(System.in);
System.out.print("Enter list1 size and contents: ");
int len1 = input.nextInt();
list1 = new int[len1];
for(int i = 0; i < list1.length; i++) {
list1[i] = input.nextInt();
}
System.out.print("Enter list2 size and contents: ");
int len2 = input.nextInt();
list2 = new int[len2];
for(int i = 0; i < list2.length; i++) {
list2[i] = input.nextInt();
}
input.close();
System.out.print("List1 is ");
for(int i = 0; i < list1.length; i++) {
System.out.print(list1[i] + " ");
}
System.out.println();
System.out.print("List2 is ");
for(int i = 0; i < list2.length; i++) {
System.out.print(list2[i] + " ");
}
System.out.println();
System.out.print("The merged list is ");
for(int i = 0; i < merge(list1, list2).length; i++) {
System.out.print(merge(list1, list2)[i] + " ");
}
}
public static int[] merge(int[] list1, int[] list2) {
int[] merge = new int[list1.length + list2.length];
int min = Math.min(list1.length, list2.length);
for(int i = 0, j = 0, k = 0; i < merge.length; k++) {
if (min <= list1.length || min <= list2.length) {
if(list2[j] <= list1[i]) {
merge[k] = list2[j];
j++;
}
else {
merge[k] = list1[i];
i++;
}
min++;
}
else if(list2.length >= list1.length) {
if(list1[i] <= list2[j]) {
merge[k] = list1[i];
i++;
}
else {
merge[k] = list2[j];
j++;
}
}
}
return merge;
}
}