C Program to find Second smallest element in an array
Find Second Smallest Element in an Array in C
Today we learn how to Find the Second smallest element in an array with help of the C Programming concept.
Different methods covered in this post
- Method 1: Uses two loops find 2nd smallest
- Method 2: Uses a single loop to find 2nd smallest
Let’s look at both the methods one by one
Method 1
Working
- We assign min = arr[0]
- In loop 1, we find the smallest element in the array
- We assign sec_smallest = INT_MAX
- In loop 2, we try to find the element with the given condition
- (arr[i] != smallest && arr[i] < sec_smallest)
Method Code in C
Run
Run
#include <stdio.h> #include <limits.h> int secSmallest(int arr[], int n) { // assigning first element as smallest temporarily int smallest = arr[0]; // we find the smallest element here for (int i=0; i < n; i++){ if(arr[i] < smallest) smallest = arr[i]; } // temporarily assinging largest max value int sec_smallest = INT_MAX; // finding second smallest here for (int i=0; i < n; i++){ if(arr[i] != smallest && arr[i] < sec_smallest) sec_smallest = arr[i]; } return sec_smallest; } int main() { int arr[] = {70, 40, 30, 20, 10, 90}; // get the length of the array int len = sizeof(arr)/sizeof(arr[0]); printf("The 2nd smallest : %d",secSmallest(arr, len)); }
Output
The 2nd smallest : 20
Method 2
We try to find smallest and 2nd smallest with variable first and second respectively
Working
- first = second = INT_MAX
- If the current element being read is the smallest i.e. if (arr[i] < first)
- Do second = first, first = arr[i];
- else if you’re reading an element that lies between first and second
- Do second = arr[i]
Run
Run
#include <stdio.h> #include <limits.h> void get2ndSmallest(int arr[], int n) { int i, first, second; /* The array must have 2 or more items */ if (n < 2) { printf(" Array has lesser than 2 items"); return; } first = second = INT_MAX; for (i = 0; i < n ; i ++) { /* If the current array element is smaller than the first then update both first and second */ if (arr[i] < first) { second = first; first = arr[i]; } /* If arr[i] lies between first and second then update second */ else if (arr[i] < second && arr[i] != first) second = arr[i]; } if (second == INT_MAX) printf("We don't have 2nd smallest item in array\n"); else printf("The 2nd smallest : %d",second); } int main() { int arr[] = {70, 40, 30, 20, 10, 90}; int len = sizeof(arr)/sizeof(arr[0]); get2ndSmallest(arr, len); return 0; }
Output
The 2nd smallest : 20
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Important Codes related to Arrays
- Find Smallest Element in an Array : C | C++ | Java | Python
- Find Second Smallest Element in an Array : C | C++ | Java | Python
- Find Largest element in an array : C | C++ | Java | Python
- Find the Smallest and largest element in an array : C | C++ | Java | Python
- Calculate the sum of elements in an array : C | C++ | Java | Python
- Reverse an Array : C | C++ | Java | Python
- Sort first half in ascending order and second half in descending : C | C++ | Java | Python
- Sort the elements of an array : C | C++ | Java | Python
- Finding the frequency of elements in an array : C | C++ | Java | Python
- Sorting elements of an array by frequency : C | C++ | Java | Python
- Finding the Longest Palindrome in an Array : C | C++ | Java| Python
- Counting Distinct Elements in an Array : C | C++ | Java| Python
- Finding Repeating elements in an Array : C | C++ | Java | Python
- Finding Non Repeating elements in an Array : C | C++ | Java | Python
- Removing Duplicate elements from an array : C | C++ | Java | Python
- Finding Minimum scalar product of two vectors : C | C++ | Java | Python
- Finding Maximum scalar product of two vectors in an array : C | C++ | Java | Python
- Counting the number of even and odd elements in an array : C | C++ | Java | Python
- Find all Symmetric pairs in an array : C | C++ | Java | Python
- Find maximum product sub-array in a given array : C | C++ | Java | Python
- Finding Arrays are disjoint or not : C | C++ | Java | Python
- Determine Array is a subset of another array or not : C | C++ | Java | Python
- Determine can all numbers of an array be made equal : C | C++ | Java | Python
- Finding Minimum sum of absolute difference of given array : C | C++ | Java | Python
- Sort an array according to the order defined by another array : C | C++ | Java | Python
- Replace each element of the array by its rank in the array : C | C++ | Java | Python
- Finding equilibrium index of an array : C | C++ | Java| Python
- Rotation of elements of array- left and right : C | C++ | Java| Python
- Block swap algorithm for array rotation : C | C++ | Java| Python
- Juggling algorithm for array rotation : C | C++ | Java | Python
- Finding Circular rotation of an array by K positions : C | C++ | Java | Python
- Balanced Parenthesis Problem : C | C++ | Java | Python
Login/Signup to comment