C Online Compiler
Example: Find Second Smallest and Largest with Two Passes in C
C
C++
C#
Java
Python
PHP
main.c
STDIN
Run
// Find Second Smallest and Largest with Two Passes #include <stdio.h> #include <limits.h> // For INT_MAX and INT_MIN void findSecondMinMaxTwoPass(int arr[], int n) { if (n < 2) { printf("Array must have at least two elements.\n"); return; } int smallest = INT_MAX, largest = INT_MIN; int secondSmallest = INT_MAX, secondLargest = INT_MIN; // Pass 1: Find the smallest and largest elements for (int i = 0; i < n; i++) { if (arr[i] < smallest) { smallest = arr[i]; } if (arr[i] > largest) { largest = arr[i]; } } // Pass 2: Find the second smallest and second largest for (int i = 0; i < n; i++) { if (arr[i] < secondSmallest && arr[i] != smallest) { secondSmallest = arr[i]; } if (arr[i] > secondLargest && arr[i] != largest) { secondLargest = arr[i]; } } if (secondSmallest != INT_MAX) { printf("Second smallest element (two-pass approach): %d\n", secondSmallest); } else { printf("Second smallest element not found (all elements might be same or array too small).\n"); } if (secondLargest != INT_MIN) { printf("Second largest element (two-pass approach): %d\n", secondLargest); } else { printf("Second largest element not found (all elements might be same or array too small).\n"); } } int main() { int arr[] = {12, 35, 1, 10, 34, 1}; int n = sizeof(arr) / sizeof(arr[0]); printf("Original array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); findSecondMinMaxTwoPass(arr, n); int arr2[] = {5, 5, 5, 5}; int n2 = sizeof(arr2) / sizeof(arr2[0]); printf("\nOriginal array 2: "); for (int i = 0; i < n2; i++) { printf("%d ", arr2[i]); } printf("\n"); findSecondMinMaxTwoPass(arr2, n2); int arr3[] = {7}; int n3 = sizeof(arr3) / sizeof(arr3[0]); printf("\nOriginal array 3: "); for (int i = 0; i < n3; i++) { printf("%d ", arr3[i]); } printf("\n"); findSecondMinMaxTwoPass(arr3, n3); return 0; }
Output
Clear
ADVERTISEMENTS