C Online Compiler
Example: Find Second Smallest and Largest by Sorting in C
C
C++
C#
Java
Python
PHP
main.c
STDIN
Run
// Find Second Smallest and Largest by Sorting #include <stdio.h> #include <stdlib.h> // For qsort // Comparison function for qsort (ascending order) int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } void findSecondMinMaxSorted(int arr[], int n) { if (n < 2) { printf("Array must have at least two elements.\n"); return; } // Sort the array in ascending order qsort(arr, n, sizeof(int), compare); int secondSmallest = -1; int secondLargest = -1; // Find second smallest (skipping duplicates of the smallest) int i; for (i = 1; i < n; i++) { if (arr[i] > arr[0]) { // arr[0] is the smallest secondSmallest = arr[i]; break; } } // Find second largest (skipping duplicates of the largest) for (i = n - 2; i >= 0; i--) { if (arr[i] < arr[n - 1]) { // arr[n-1] is the largest secondLargest = arr[i]; break; } } if (secondSmallest != -1) { printf("Second smallest element (sorted approach): %d\n", secondSmallest); } else { printf("Second smallest element not found (all elements might be same).\n"); } if (secondLargest != -1) { printf("Second largest element (sorted approach): %d\n", secondLargest); } else { printf("Second largest element not found (all elements might be same).\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"); findSecondMinMaxSorted(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"); findSecondMinMaxSorted(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"); findSecondMinMaxSorted(arr3, n3); return 0; }
Output
Clear
ADVERTISEMENTS