Question
public class Word implements Comparable { public String value; public Integer frequency; public Word(String value, Integer frequency){ this.value = value; this.frequency = frequency; } @Override
public class Word implements Comparable
public String value;
public Integer frequency;
public Word(String value, Integer frequency){
this.value = value;
this.frequency = frequency;
}
@Override
public int compareTo(Word otherWord) {
if(this.frequency.equals(otherWord.frequency))
return -1 * this.value.compareTo(otherWord.value);
else
return this.frequency.compareTo(otherWord.frequency);
}
public String toString(){
return "[" + value + ", " + frequency + "]";
}
}
public class Selector {
private static void swap(Word[] array, int i, int j){
if(i == j) return;
Word temp = array[i];
array[i] = array[j];
array[j] = temp;
}
// Problem #4 (5 pts)
// Fill in the following method with an O(n + klog(n)) time algorithm
// that returns the k largest elements of array in order from
// largest to smallest.
// Note: This should return an array with k elements.
// All comparison must be done by the compareTo method.
// Hint: Your approach should use a BinaryHeap.
public static Word[] heapSelect(Word[] array, int k){
return null;
}
Note: a Word consists a word itself and the frequency. ex) [apple, 25]
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started