Back to DSA Course
DSA Course
Linear search is a very simple algorithm. In this type of search, sequential search is made over all items one by one.
Every item is checked and if a match is found then that particular item is returned, otherwise search will continue till the end of the data collection.
Let's start coding for linear search
package com.praveen.search.linear; public class LinearSearch { public static void main(String[] args) { int[] arr = { 90, 24, 46, 35, 32 }; System.out.println(search(arr, 32)); System.out.println(search(arr, 46)); System.out.println(search(arr, 100)); } private static int search(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) { return i; } } return -1; } }
Output
4 2 -1
Let's see some programs
1. Search in Range
package com.praveen.search.linear; public class SearchInRange { public static void main(String[] args) { int[] arr = { 90, 24, 46, 35, 32 }; System.out.println(searchInRange(arr, 32, 1, 3)); System.out.println(searchInRange(arr, 46, 1, 3)); } private static int searchInRange(int[] arr, int target, int start, int end) { for (int i = start; i <= end; i++) { if (arr[i] == target) { return i; } } return -1; } }
Output
-1 2
2. Find minimum element in an array
package com.praveen.search.linear; public class FindMin { public static void main(String[] args) { int[] arr = { 90, 24, 46, 35, 32 }; System.out.println(min(arr)); } private static int min(int[] arr) { int min = arr[0]; for (int i : arr) { if (i < min) { min = i; } } return min; } }
Output
24
3. Search in 2D Array
package com.praveen.search.linear; import java.util.Arrays; public class SearchIn2DArray { public static void main(String[] args) { int[][] arr = { { 12, 18, 21 }, { 89, 73, 23, 92 }, { 6, 32, 1 }, { 10, 43 } }; System.out.println(Arrays.toString(searchIn2DArray(arr, 32))); System.out.println(Arrays.toString(searchIn2DArray(arr, 43))); System.out.println(Arrays.toString(searchIn2DArray(arr, 73))); System.out.println(Arrays.toString(searchIn2DArray(arr, 100))); } private static int[] searchIn2DArray(int[][] arr, int target) { for (int row = 0; row < arr.length; row++) { for (int col = 0; col < arr[row].length; col++) { if (target == arr[row][col]) { return new int[] { row, col }; } } } return new int[] { -1, -1 }; } }
Output
[2, 1] [3, 1] [1, 1] [-1, -1]
4. Maximum value in 2D Array
package com.praveen.search.linear; public class FindMaxin2DArray { public static void main(String[] args) { int[][] arr = { { 12, 18, 21 }, { 89, 73, 23, 92 }, { 6, 32, 1 }, { 10, 43 } }; System.out.println(maxIn2DArray(arr)); } private static int maxIn2DArray(int[][] arr) { int max = Integer.MIN_VALUE; for (int row = 0; row < arr.length; row++) { for (int col = 0; col < arr[row].length; col++) { if (arr[row][col] > max) { max = arr[row][col]; } } } return max; } }
Output
92
5. Find numbers with even number of digits
package com.praveen.search.linear; public class FindEvenNumberOfDigits { public static void main(String[] args) { System.out.println(findNumbers(new int[] { 12, 345, 2, 6, 7896 })); System.out.println(findNumbers(new int[] { 92, 122, 9062, 230455, -36533 })); System.out.println(findNumbers(new int[] { 0, 12, 312, 9765, 12345 })); } private static int findNumbers(int[] arr) { int count = 0; for (int i : arr) { if (even(i)) { count++; } } return count; } private static boolean even(int num) { return digits(num) % 2 == 0; } private static int digits(int num) { if (num < 0) { num *= -1; } if (num == 0) { num = 1; } return (int) (Math.log10(num) + 1); } }
Output
2 3 2
6. Richest Customer Wealth
package com.praveen.search.linear; public class MaximumWealth { public static void main(String[] args) { System.out.println(maximumWealth(new int[][] { { 1, 2, 3 }, { 3, 2, 1 } })); System.out.println(maximumWealth(new int[][] { { 1, 6, 3 }, { 9, 8, 4 }, { 12, 1, 0 } })); System.out.println(maximumWealth(new int[][] { { 11, 32, 53 }, { 29, 38, 24 }, { 112, -1, 10 } })); } private static int maximumWealth(int[][] accounts) { int sum = 0; int max = Integer.MIN_VALUE; for (int[] ints : accounts) { sum = 0; for (int elements : ints) { sum += elements; } if (sum > max) { max = sum; } } return max; } }
Output
6 21 121