Answered You can buy a ready-made answer or pick a professional tutor to order an original one.
The language used is Java /** * * Merging k sorted arrays into a single sorted array. * Your algorithm must be stable. * * You are NOT allowed to call the constructor of class Student, except i
The language used is Java /** * * Merging k sorted arrays into a single sorted array. * Your algorithm must be stable. * * You are NOT allowed to call the constructor of class Student, except in <em>main</em>. */ public class StableMerger { /** * * No modification to class Student is allowed. * If you change anything
This question hasn't been solved yet
The language used is Java/** * * Merging k sorted arrays into a single sorted array. * Your algorithm must be stable. * * You are NOT allowed to call the constructor of class Student, except in <em>main</em>. */public class StableMerger { /** * * No modification to class Student is allowed. * If you change anything here, your work will not be graded. * */ static class Student { String name; double grade; public Student(String n, double g) { name = n; grade = g; } public String toString() { return "(" + name + ", " + grade + ")"; } }
/** * Running time: O( ). (n is the total number of students.) */ public static Student[] merge(Student[][] a) { return null; }
public static void main(String[] args) { String[][] names = {{"Gloria Tang", "Andy Lau", "McDull"}, {"Eason Chan", "Denise Ho", "Jennifer Chan", "Joey Yung", "Kay Tse", "Jacky Cheung", "Anita Mui"}, {"Winnie", "Mickey", "Teddy", "Peppa"}}; double[][] grades = {{60, 60, 60}, {40, 60, 70, 80, 90, 95, 100}, {0, 90, 95, 100}}; Student[][] a = new Student[names.length][]; for (int i = 0; i < names.length; i++) { a[i] = new Student[names[i].length]; for (int j = 0; j < names[i].length; j++) a[i][j]= new Student(names[i][j], grades[i][j]); } System.out.println(Arrays.toString(merge(a))); }}
- @
- ANSWER
java code
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
public class StableMerger {
static class Student {
String name;
double grade;
public Student(String n, double g) {
name = n; grade = g;
}
public String toString() {
return "(" + name + ", " + grade + ")";
}
}
public static Student[] merge(Student[][] a) {
LinkedHashMap<String, Double> myMap = new LinkedHashMap<String, Double>();
for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[i].length; j++)
myMap.put(a[i][j].name , a[i][j].grade);
LinkedHashMap<String, Double> sortedMap = new LinkedHashMap<>();
myMap.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sortedMap.put((String)x.getKey(), (Double)x.getValue()));
Student[] merge = new Student[sortedMap.size()];
int x = 0;
for (Map.Entry<String, Double> entry : sortedMap.entrySet()) {
merge[x] = new Student((String)entry.getKey() , Double.valueOf(entry.getValue().toString()) );
x++;
}
return merge;
}
public static void main(String[] args) {
String[][] names = {{"Gloria Tang", "Andy Lau", "McDull"},
{"Eason Chan", "Denise Ho", "Jennifer Chan", "Joey Yung", "Kay Tse", "Jacky Cheung", "Anita Mui"},
{"Winnie", "Mickey", "Teddy", "Peppa"}};
double[][] grades = {{60, 60, 60}, {40, 60, 70, 80, 90, 95, 100}, {0, 90, 95, 100}};
Student[][] a = new Student[names.length][];
for (int i = 0; i < names.length; i++) {
a[i] = new Student[names[i].length];
for (int j = 0; j < names[i].length; j++)
a[i][j]= new Student(names[i][j], grades[i][j]);
}
System.out.println(Arrays.toString(merge(a)));
}// main
}// class