//bSearch.java /*--------------------------------------------------------------- ' class bSearch for package search ' ' Shawn McKenna ' ' DESC: This class is used to sort arrays using a binary method of divide and conquer. ' This means that the arrays must be in order (sorted) before you can search. ' ' NOTE: These methods assume data has been sorted. Always sort arrays before using a ' binary search. I have included searching for all the number types. I have not put ' in anything for character, string or class wrapper data. ' ' Since JDK 1.2, there are several methods that do a binary search (binarySearch) ' that are located in java.util.Arrays . Just like mine, data must be sorted ' before they can be searched. ' ' GENERIC NOTE: All my code has been tested, my apologies for any unforseen errors. ' Suggestions are always welcome. Feel free to use or change any of this ' code. ' ' CONSTRUCTOR: NOT USED ' ' METHODS: ' search(byte array[], byte num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' search(short array[], short num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' search(int array[], int num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' search(long array[], long num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' search(float array[], float num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' search(double array[], double num) ' MODIFIER: public, static ' DESC: Binary search for a byte array. Returns true if num is found and returns ' false if num is not found. ' RETURN TYPE: boolean true if num is found and a boolean false if not found. ' ' EXAMPLE FOR DECLARING METHODS -- ' // arrays have to be sorted before you can successfully use a binary sort. ' double temp[] = { 1, 3, 5, 6, 99.9 }; ' int iTemp[] = { 1, 3, 5, 6, 99 }; ' ' if (search(temp, 99.9)) ' System.out.println("Found"); ' else ' System.out.println("Not Found"); ' if (search(iTemp, 99)) ' System.out.println("Found"); ' else ' System.out.println("Not Found"); ' ' DATE MODIFIED: 11/9/2000 ' VERSION: 1.0 '---------------------------------------------------------------- */ package search; public class bSearch { public static boolean search (byte array[], byte num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method for byte public static boolean search (short array[], short num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method for short public static boolean search (int array[], int num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method for int public static boolean search (long array[], long num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method for long data types public static boolean search (float array[], float num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method for float public static boolean search (double array[], double num) { int lower = 0; int upper = array.length - 1; while (lower <= upper) { int middle = (lower + upper) / 2; if (num > array[middle]) lower = middle + 1; else if (num < array[middle]) upper = middle - 1; else break; } // end of while if (lower > upper) return false; else return true; } // end of search method } // end of class bSearch