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