I need help to create a binary search that I need to create a AlphaFinder class
ID: 3686945 • Letter: I
Question
I need help to create a binary search that I need to create a AlphaFinder class that implments a third comparator I already post this question twice can some one please help me thank you
2) At the end of main is a comment to search for the string “bbbw”. Add the appropriate code to perform a binary search for that string and print the location where it was found. You will need to implement a third comparator, AlphaFinder, for this purpose.
Hint: You need to use the substring and charAt methods in the String class.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class SortRunner
{
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("aaa888q");
al.add("aaa888q");
al.add("aaa555q");
al.add("aaa333q");
al.add("aaa888p");
al.add("aaa888a");
al.add("bbb111z");
al.add("bbb222w");
al.add("ccc777a");
al.add("eee888b");
al.add("zzz000c");
al.add("zzz666d");
al.add("ppp333e");
al.add("ppp111f");
ReverseWordSorter rws = new ReverseWordSorter();
Collections.sort(al,rws);
System.out.println("ReverseWord order:");
for(String s : al)
System.out.println(s);
LetterNumberSorter ls = new LetterNumberSorter();
Collections.sort(al,ls);
System.out.println("Letter-Number order:");
for(String s : al)
System.out.println(s);
// NumberLetterSorter nls = new NumberLetterSorter();
// Collections.sort(al,nls);
// System.out.println("Number-Letter order:");
// for(String s : al)
// System.out.println(s);
// Add code to search for the string "bbbw".
}
}
Explanation / Answer
Hi I have implemented AlphaFinder.java and Make changes in SortRunner.java.
############## SortRunner.java ##################
import java.util.ArrayList;
import java.util.Collections;
public class SortRunner
{
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("aaa888q");
al.add("aaa888q");
al.add("aaa555q");
al.add("aaa333q");
al.add("aaa888p");
al.add("aaa888a");
al.add("bbb111z");
al.add("bbb222w");
al.add("ccc777a");
al.add("eee888b");
al.add("zzz000c");
al.add("zzz666d");
al.add("ppp333e");
al.add("ppp111f");
ReverseWordSorter rws = new ReverseWordSorter();
Collections.sort(al, rws);
System.out.println("ReverseWord order:");
for (String s : al)
System.out.println(s);
LetterNumberSorter ls = new LetterNumberSorter();
Collections.sort(al, ls);
System.out.println("Letter-Number order:");
for (String s : al)
System.out.println(s);
NumberLetterSorter nls = new NumberLetterSorter();
Collections.sort(al,nls);
System.out.println("Number-Letter order:");
for (String s : al)
System.out.println(s);
//searching
AlphaFinder alpha= new AlphaFinder();
//sorting first
Collections.sort(al,alpha);
System.out.println("Alpha-Finder order:");
for(String s : al)
System.out.println(s);
int index = alpha.binary_search(al, "bbbw");
if(index == -1)
System.out.println("bbbw does not found");
else
System.out.println("bbbw is at index: "+index);
// Add code to search for the string "bbbw".
}
}
################# AlphaFinder.java ###################
import java.util.ArrayList;
import java.util.Comparator;
public class AlphaFinder implements Comparator<String> {
public int binary_search(ArrayList<String> list, String key) {
int left = 0;
int right = list.size() - 1;
while (left < right) {
int mid = (left + right) / 2;
String midStr = list.get(mid);
String letterPart = midStr.substring(0, 3)+midStr.charAt(6);
if (key.equals(letterPart))
return mid;
else if (letterPart.compareTo(key) < 0)
left = mid;
else
right = mid;
}
return -1;
}
@Override
public int compare(String a, String b) {
String tempa = a.substring(0, 3) + a.charAt(6) + a.substring(3, 6);
String tempb = b.substring(0, 3) + b.charAt(6) + b.substring(3, 6);
return tempa.compareTo(tempb);
}
}
/*
Output:
ReverseWord order:
zzz666d
zzz000c
ppp333e
ppp111f
eee888b
ccc777a
bbb222w
bbb111z
aaa888q
aaa888q
aaa888p
aaa888a
aaa555q
aaa333q
Letter-Number order:
aaa333q
aaa555q
aaa888a
aaa888p
aaa888q
aaa888q
bbb111z
bbb222w
ccc777a
eee888b
ppp111f
ppp333e
zzz000c
zzz666d
Number-Letter order:
zzz000c
ppp111f
bbb111z
bbb222w
ppp333e
aaa333q
aaa555q
zzz666d
ccc777a
aaa888a
eee888b
aaa888p
aaa888q
aaa888q
Alpha-Finder order:
aaa888a
aaa888p
aaa333q
aaa555q
aaa888q
aaa888q
bbb222w
bbb111z
ccc777a
eee888b
ppp333e
ppp111f
zzz000c
zzz666d
bbbw is at index: 6
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.