Find Second Smallest Element in an Array
Understanding Second Smallest Element
Finding the second smallest element in an array involves identifying the smallest element and then searching for the next smallest value.
We will explore three different methods to find the second smallest element in an array using Java.
Method 1: Using Iteration
This method iterates through the array to find the smallest and second smallest elements.
import java.util.*; public class SecondSmallest { public static void findSecondSmallest(int[] arr) { int smallest = Integer.MAX_VALUE, secondSmallest = Integer.MAX_VALUE; for (int num : arr) { if (num < smallest) { secondSmallest = smallest; smallest = num; } else if (num < secondSmallest && num != smallest) { secondSmallest = num; } } System.out.println("Second Smallest Element: " + secondSmallest); } public static void main(String[] args) { int[] arr = {10, 20, 4, 45, 99, 23}; findSecondSmallest(arr); } }
Method 2: Using Sorting
This method sorts the array and takes the second element as the second smallest.
import java.util.*; public class SecondSmallest { public static void findSecondSmallest(int[] arr) { Arrays.sort(arr); System.out.println("Second Smallest Element: " + arr[1]); } public static void main(String[] args) { int[] arr = {10, 20, 4, 45, 99, 23}; findSecondSmallest(arr); } }
Method 3: Using Recursion
This method finds the second smallest element using recursion.
import java.util.*; public class SecondSmallest { public static void findSecondSmallestRecursive(int[] arr, int n, int[] smallest, int[] secondSmallest) { if (n == 0) return; if (arr[n - 1] < smallest[0]) { secondSmallest[0] = smallest[0]; smallest[0] = arr[n - 1]; } else if (arr[n - 1] < secondSmallest[0] && arr[n - 1] != smallest[0]) { secondSmallest[0] = arr[n - 1]; } findSecondSmallestRecursive(arr, n - 1, smallest, secondSmallest); } public static void main(String[] args) { int[] arr = {10, 20, 4, 45, 99, 23}; int[] smallest = {Integer.MAX_VALUE}, secondSmallest = {Integer.MAX_VALUE}; findSecondSmallestRecursive(arr, arr.length, smallest, secondSmallest); System.out.println("Second Smallest Element: " + secondSmallest[0]); } }