/**
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;
}