Update BinarySearch.java

Converted integer binary search to generic binary search
This commit is contained in:
Varun Upadhyay
2017-08-17 06:57:00 -07:00
committed by GitHub
parent eca7a0ee28
commit 22350eaf6b

View File

@ -1,68 +1,71 @@
import java.util.Scanner; import java.util.Scanner;
/** /**
* Implements a Binary Search in Java
* *
* @author unknown * @author Varun Upadhyay (https://github.com/varunu28)
*
*/ */
class BinarySearch class BinarySearch
{ {
/** /**
* This method implements the Binary Search * This method implements the Generic Binary Search
* *
* @param array The array to make the binary search * @param array The array to make the binary search
* @param key The number you are looking for * @param key The number you are looking for
* @param lb The lower bound * @param lb The lower bound
* @param up The upper bound * @param ub The upper bound
* @return the location of the key * @return the location of the key
**/ **/
public static int BS(int array[], int key, int lb, int ub)
{
if ( lb > ub)
return -1;
int mid = (lb + ub) / 2;
if (key < array[mid]) public static <T extends Comparable<T>> int BS(T array[], T key, int lb, int ub)
return (BS(array, key, lb, mid-1)); {
if ( lb > ub)
if (key > array[mid]) return -1;
return (BS(array, key, mid + 1, ub));
return mid;
}
int mid = (ub+lb)/2;
/** int comp = key.compareTo(array[mid]);
* This is the main method of Binary Search
*
* @author Unknown
* @param args Command line parameters
*/
public static void main(String[] args) if (comp < 0)
{ return (BS(array, key, lb, mid-1));
Scanner input=new Scanner(System.in);
int array[]=new int[10] ;
int key;
//Input if (comp > 0)
System.out.println("Enter an array of 10 numbers : "); return (BS(array, key, mid + 1, ub));
for (int i = 0; i < 10 ; i++ )
array[i] = input.nextInt();
System.out.println("Enter the number to be searched : ");
key = input.nextInt(); return mid;
}
int index=BS(array, key, 0, 9); // Driver Program
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
if (index != -1) // For INTEGER Input
System.out.println("Number found at index number : " + index); Integer[] array = new Integer[10];
else int key = 5;
System.out.println("Not found");
for (int i = 0; i < 10 ; i++ )
input.close(); array[i] = i+1;
}
int index = BS(array, key, 0, 9);
if (index != -1)
System.out.println("Number " + key + " found at index number : " + index);
else
System.out.println("Not found");
// For STRING Input
String[] array1 = {"a", "b", "c", "d", "e"};
String key1 = "d";
int index1 = BS(array1, key1, 0, array1.length-1);
if (index1 != -1)
System.out.println("String " + key1 + " found at index number : " + index1);
else
System.out.println("Not found");
input.close();
}
} }