/** A class for executing binary searches through an array. */ public class BinarySearcher { /** Constructs a BinarySearcher. @param anArray a sorted array of integers */ public BinarySearcher(Appointment[] anArray) { a = anArray; } /** Finds a value in a sorted array, using the binary search algorithm. @param v the value to search @return the index at which the value occurs, or -1 if it does not occur in the array */@@ public int search(Appointment v) { int midp = 0; int low = 0; int high = a.length - 1; while (low <= high) { int mid = (low + high) / 2; midp = mid; int diff = a[mid].compareTo(v); if (diff == 0) // a[mid] == v return 0; else if (diff < 0) // a[mid] < v low = mid + 1; else high = mid - 1; } return midp + 1; }@@ private Appointment[] a; } public class AppointmentBook{ public AppointmentBook(){ } public AppointmentBook(Appointment[] an){ anArray = an; }@@ public String add(Appointment a){ BinarySearcher searcher = new BinarySearcher(anArray); int sea = searcher.search(a); if (sea == 0){ return "Error: Overlapping Appointments!"; } else{ Appointment[] an = new Appointment[anArray.length+2]; for(int n = 0; n < sea - 1; n++){ an[n] = anArray[n]; } for(int n = sea; n < anArray.length+1; n++){ an[n] = anArray[n - 1]; } an[sea - 1] = a; anArray = an; return "Appointment Added!"; }@@ }@@ public String print(){ for (int n = 0; n < anArray.length - 1; n++){ x = anArray[n]; return x.toString(); } return null; }@@ private Appointment x; private Appointment[] anArray; } /** A class for executing binary searches through an array. */ public class BinarySearcher { /** Constructs a BinarySearcher. @param anArray a sorted array of integers */ public BinarySearcher(Appointment[] anArray) { a = anArray; } /** Finds a value in a sorted array, using the binary search algorithm. @param v the value to search @return the index at which the value occurs, or -1 if it does not occur in the array */ @@ public int search(Appointment v) { int midp = 0; int low = 0; int high = a.length - 1; while (low <= high) { int mid = (low + high) / 2; midp = mid; int diff = a[mid].compareTo(v); if (diff == 0) // a[mid] == v return 0; else if (diff < 0) // a[mid] < v low = mid + 1; else high = mid - 1; } return midp + 1; } @@ private Appointment[] a; }