From ee5974a04e5093c32303fafdbecb48b0074d7e5c Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Sun, 13 Aug 2017 12:03:28 -0700 Subject: [PATCH 1/2] Updated LinearSearch.java Converted integer linear search to a generic linear search and added faster input method --- Searches/LinearSearch.java | 133 +++++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 59 deletions(-) diff --git a/Searches/LinearSearch.java b/Searches/LinearSearch.java index 0a1bb7cc58cc..6c5322520ac6 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){ - - Scanner input = new Scanner(System.in); - int[] myArray; - int size = 0; - - //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(); - } - - //Prompt user to search for particular element - System.out.print("Enter integer to search for: "); - int key = input.nextInt(); - - //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(); - } - - /** - * 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){ - - 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(); - } + /** + * The main method + * @param args Command line arguments + */ + public static void main(String[] args) throws Exception { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + // Test for Integer inputs + Integer[] myArray; + int size = 0; + + //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()); + } + + //Prompt user to search for particular element + System.out.print("Enter integer to search for: "); + Integer key = Integer.parseInt(br.readLine()); + + //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)); + + // 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; + } } From 13bd0365f398bf85291d7c8b671fb03448e525f3 Mon Sep 17 00:00:00 2001 From: Varun Upadhyay Date: Sun, 13 Aug 2017 12:37:54 -0700 Subject: [PATCH 2/2] Create DecimalToAnyBase.java A program to convert a decimal number to any given base --- Conversions/DecimalToAnyBase.java | 65 +++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Conversions/DecimalToAnyBase.java diff --git a/Conversions/DecimalToAnyBase.java b/Conversions/DecimalToAnyBase.java new file mode 100644 index 000000000000..d3927ff8d9e2 --- /dev/null +++ b/Conversions/DecimalToAnyBase.java @@ -0,0 +1,65 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; + +/** + * + * @author Varun Upadhyay (https://github.com/varunu28) + * + */ + +// Driver Program +public class DecimalToAnyBase { + public static void main (String[] args) throws Exception{ + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + System.out.println("Enter the decimal input below: "); + int decInput = Integer.parseInt(br.readLine()); + System.out.println(); + + System.out.println("Enter the base below: "); + int base = Integer.parseInt(br.readLine()); + System.out.println(); + + System.out.println("Decimal Input" + " is: " + decInput); + System.out.println("Value of " + decInput + " in base " + base + " is: " + convertToAnyBase(decInput, base)); + + br.close(); + } + + /** + * This method produces a String value of any given input decimal in any base + * @param inp Decimal of which we need the value in base in String format + * @return string format of the converted value in the given base + */ + + public static String convertToAnyBase(int inp, int base) { + ArrayList charArr = new ArrayList<>(); + + while (inp > 0) { + charArr.add(reVal(inp%base)); + inp /= base; + } + + StringBuilder str = new StringBuilder(charArr.size()); + + for(Character ch: charArr) + { + str.append(ch); + } + + return str.reverse().toString(); + } + + /** + * This method produces character value of the input integer and returns it + * @param num integer of which we need the character value of + * @return character value of input integer + */ + + public static char reVal(int num) { + if (num >= 0 && num <= 9) + return (char)(num + '0'); + else + return (char)(num - 10 + 'A'); + } +}