Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote