From ee5974a04e5093c32303fafdbecb48b0074d7e5c Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Sun, 13 Aug 2017 12:03:28 -0700 Subject: [PATCH] Updated LinearSearch.java Converted integer linear search to a generic linear search and added faster input method --- Searches/LinearSearch.java | 121 +++++++++++++++++++++---------------- 1 file changed, 68 insertions(+), 53 deletions(-) diff --git a/Searches/LinearSearch.java b/Searches/LinearSearch.java index 0a1bb7cc5..6c5322520 100644 --- a/Searches/LinearSearch.java +++ b/Searches/LinearSearch.java @@ -1,62 +1,77 @@ -import java.util.Scanner; +import java.io.BufferedReader; +import java.io.InputStreamReader; + +/** + * + * @author Varun Upadhyay (https://github.com/varunu28) + * + */ public class LinearSearch{ - /** - * The main method - * @param args Command line arguments - */ - public static void main(String[] args){ + /** + * The main method + * @param args Command line arguments + */ + public static void main(String[] args) throws Exception { - Scanner input = new Scanner(System.in); - int[] myArray; - int size = 0; + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); - //Prompt user to create array and its elements - System.out.print("Enter the array size: "); - size = input.nextInt(); - myArray = new int[size]; - for (int i = 0; i < size; i++){ - System.out.print("For index " + i + ", enter an integer: "); - myArray[i] = input.nextInt(); - } + // Test for Integer inputs + Integer[] myArray; + int size = 0; - //Prompt user to search for particular element - System.out.print("Enter integer to search for: "); - int key = input.nextInt(); + //Prompt user to create array and its elements + System.out.print("Enter the array size: "); + size = Integer.parseInt(br.readLine()); + myArray = new Integer[size]; + for (int i = 0; i < size; i++){ + System.out.print("For index " + i + ", enter an integer: "); + myArray[i] = Integer.parseInt(br.readLine()); + } - //Output array and index of target element, if found - printarray(myArray); - System.out.printf("The integer %d is found in index %d\n", key, linearsearch(myArray, key)); - - input.close(); - } + //Prompt user to search for particular element + System.out.print("Enter integer to search for: "); + Integer key = Integer.parseInt(br.readLine()); - /** - * Linear search method - * - * @param list List to be searched - * @param key Key being searched for - * @return Location of the key - */ - public static int linearsearch(int[] list, int key){ + //Output array and index of target element, if found + System.out.printf("The integer %d is found in index %d\n", key, linearSearch(myArray, key)); - for (int i = 0; i< list.length; i++){ - if (list[i] == key){ - return i; - } - - } return -1; - } - /** - * Helper Method - * - * @param a array to be printed - */ - public static void printarray(int[] a){ - System.out.print("The array is: "); - for( int d: a){ - System.out.print(d+" "); - } - System.out.println(); - } + // Test for String inputs + String[] myArray1; + int size1 = 0; + + //Prompt user to create array and its elements + System.out.print("Enter the array size: "); + size1 = Integer.parseInt(br.readLine()); + myArray1 = new String[size]; + for (int i = 0; i < size1; i++){ + System.out.print("For index " + i + ", enter a String: "); + myArray1[i] = br.readLine(); + } + + //Prompt user to search for particular element + System.out.print("Enter String to search for: "); + String key1 = br.readLine(); + + //Output array and index of target element, if found + System.out.printf("The string %s is found in index %d\n", key1, linearSearch(myArray1, key1)); + } + + /** + * Generic Linear search method + * + * @param array List to be searched + * @param value Key being searched for + * @return Location of the key + */ + public static > int linearSearch(T[] array, T value) { + int lo = 0; + int hi = array.length - 1; + for (int i = lo; i <= hi; i++) { + if (array[i].compareTo(value) == 0) { + return i; + } + } + return -1; + } }